For example, the trait TPureBehavior has the method #traitComposition, which is an explicit requirement, and I can do I have that: (TPureBehavior>>#traitComposition) origin. --> TPureBehavior which is nice. Now lets suppose I create: Object subclass: #AAA uses: TPureBehavior instanceVariableNames: '' classVariableNames: '' poolDictionaries: '' category: 'Guille' without creating the required traitComposition method (AAA>>#traitComposition) origin. --> AAA ?????????? shouldn't the origin be TPureBehavior? The question is: Which is the intended behavior for the #origin of a method? Because that's causing an issue in RPackage :). I've traced this, and it comes that if I have a trait method marked as explicitRequiriment, the following method answers just false CompiledMethod>>isProvided: marker marker ifNil: [^ true]. ^ (self isRequired: marker) not and: [(self isDisabled: marker) not] and then a magic *ifNone: [ self ]* return the receiver on the behavior, and that's why in both examples the method's behavior is returned instead of the origin. Then we probably should have two methods - #isProvided to see if an implementation is provided - #isDefined if a definition for the method exists but those names do not make me happy. Guille