made it a little faster and separated the mixin bit

the first commit is pure optimisation. The second breaks the mixin part of the api