refactored to offer just a multiple mixin