Switched all implementations to mixins