add mixin and extend