If a team refines another team all roles of the refined team are implicit available in the refining team. This technique is called "Implicit Inheritance". Example ======= class T < Team class A def a myTeam::B.new end end class B end end class R < T class B end end Implicit Inheritance ==================== The team T defines 2 roles: A and B. Team R is a refinement of T. Both roles are implicit accessible in this team. Explicitely: T defines role: T::A and T::B. R refines T and has implicitely two roles: R::A and R::B. A class definition in R with same name as a class in team T or any superclass is automatically a refinement of this role. Class R::B is a refinement of T::B. The roles can be listed via Team.list_roles: T.list_roles => [T::A, T::B] R.list_roles => [R::A, R::B] Teamscope Operator ================== If a roleclass instantiates another team class, it should use the myTeam scope operator. Example: myTeam::MyRole.new myTeam points to the most specific role inside a team. The method "a" inside class A will create a T::B if team T is active and R::B if team R is active - automatically.