I'm a student of Rob Beezer. I just developed a patch for computing the semi-direct product of two permutation groups given a homomorphism from one into the automorphism group of the other. I'm wondering if people have thoughts on whether it would be better implemented as a global function, a la direct_product_permgroups(), or as a method, like direct_product(). I wrote it as a method, RAB prefers the global function, but suggested I see what the larger community has to say before I make my final decision.