mixins and refactor