-----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1 =pod I just released C to the CPAN. Something I like to do is to create a class, and then create a bunch of roles that enhance the functionality of that class. Then, when I need to use a set of features, I create a new class like: lang:perl package Class::WithAVarietyOfRoles; use Moose; extends 'Class'; with qw/A Variety Of Roles/; This is kind of a pain, because now I have to type C<< Class::WithAVarietyOfRoles->new >> instead of C<< Class->new >>, and I have to have a file containing my composed class definition. So, I created a role that automates the process, C. Now all I do is apply C to my extensible class: package Class; use Moose; with 'MooseX::Traits'; ... And decide which roles I want at C time: my $instance = Class->new_with_traits( traits => [qw/A Variety Of Roles/], ... ); This ends up being exactly the same, but a but more dynamic than creating an entire file just to say the same thing. Everything else works the same; you can even supply values to initialize the traits' attributes. All the details will be available at search.cpan soon; for now, just examine my git repository at L. Enjoy. -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.4.9 (GNU/Linux) iEYEARECAAYFAkh8COkACgkQ2rw+dVvzZm1SiwCgh+1S1uqV0gJRDILnaQlV/ayj G/EAoJu0HKS2RtVWgEtnxbl2z8zEwAhr =lAIb -----END PGP SIGNATURE-----