factoring out complex expression



hi all,

i have following expression
(%i1) exp: a^2*gama+b^2*gama + beta*a*c*p + beta*b*d*p - c*b*gama*p +
a*d*gama*p - beta*c*b*r + beta*a*d*r - a*c*gama*r - b*d*gama*r +
a^2*G+b^2*G;
(%o1) ...

based on advice from this list from last week i can do
(%i2) exp: facsum(exp,r,p,[gama,beta]);
(%o2) (a^2  + b^2 ) gama + (beta (a c + b d) + (- b c + a d) gama) p +
(beta (- b c + a d) - (a c + b d) gama) r + (a^2  + b^2 ) G

i would like to ask if there is any elegant way how to transform it
into my desired form
(%i3) ???
(%o3) (beta (a c + b d) + (- b c + a d) gama) p + (beta (- b c + a d)
- (a c + b d) gama) r + (a^2  + b^2 )(G + gama)
i.e. factor out the (a^2  + b^2 ) term.

i only figured out this can be done using
(%i4) factorout(exp, gama, G);
(%o4) (a beta c + b beta d - b c gama + a d gama) p + (- b beta c + a
beta d - a c gama - b d gama) r + (a^2+b^2)(gama + G)
but this is breaking previously arranged terms.

thank you very much
vit mach-zizka