Lots of decoupling changes

Also some more mixins