Is there a reason that this is a mixin, rather than a superclass?