tweak to mixins for more generality