refactor mixin further