change implementation (mixin to inheritance)