More work towards bug #7579.  The roles, and the base classes are in place.  Now I just have to connect them together.