refactoring, separating mixer implementation should be easier now