This won't compile. Mid-refactor. Will come back to this later.
Still pretty broken but ostensibly the refactor is itself complete. But obviously there are bugs to fix.
Minor change, now less bugs
I think this works out all the kinks