ROT offers 3 ways to control the creation of roles:

I) weak connectors

   A weak connector does not create any new roles. All existing
   roles can be used the usual way.
   Activation/Deactivation of weakness can be controlled by the
   weak flag of each connector:

   connector.weak = true  #make the connector weak
   connector.weak = false #normal behavior [default]

II) Custom role creators:

   The connector can use user defined rolecreators:

   a) Block creator:
      By instantiating a connector with a block, this block is used to
      create roles. The block must take two arguments: 
      *the base object, the role shall created for
      *the roleclass, which is defined by a playRole clause.

      The default behavior looks like this:
   
      connector = MyConnector.new { |base, roleclass|
        roleclass.new
      }

   b) Overriding
      The class Team uses the protected method create_roleobject(base, roleclass)
      which can be overriden in derived classes. Since each connector must
      inherit from Team, this is a simple effort.

      The default method looks like this:

      def create_roleobject(base, roleclass)
        return roleclass.new
      end


   The decision, which roleclass gets created is done on class-level,
   defined by a playRole clause, no matter about the state of base.
   It is assumed, that the roleclass implements a default constructor.
   If the roleclass has a custom constructor, or the state of base
   decides, if a more specific role has to be applied, you have to 
   use custom role creators.


   Please Note: There is the possibility to return nil as roleobject.
                This means, that the given base can't benefit from the
                role behavior - just like the connector is not active
                for this instance (this results in a warning, if you
                are in debug mode). Be careful with that option.


   
