abstracted a bunch of stuff outside of plugins