Whole bunch of incredibly broken stuff, I'll rebase all of this later