Often you want to create components that can be added to a class arbitrarily. MouseX::Traits makes it easy for the end user to use these components. Instead of requiring the user to create a named class with the desired roles applied, or apply roles to the instance one-by-one, he can just create a new class from yours with with_traits, and then instantiate that. WWW: http://search.cpan.org/dist/MouseX-Traits/