Mixin layers: an object-oriented implementation technique for refinements and collaboration-based designs