refactoring, some basic mixins added