A bit of a refactor, sad to say I'm not wanting to actually run the thing right now. Will finish thoughts and run tomorrow morning.