Max,
>Is there a "factory" way around this? I like the factory concept but think it would be more generic and flexible if methods in the factory could return objects which are not decendants of the original return type.
The best solution in this case is to make your role class a subclass of mmRole.
Regards,
Kevin McNeish
Eight-Time .NET MVP
VFP and iOS Author, Speaker & Trainer
Oak Leaf Enterprises, Inc.
Chief Architect, MM Framework
http://www.oakleafsd.com