Refactoring a whole bunch, we're gonna do this right