Partially Finished Refactor

Committing in case someone else wants to help or I move to a different
PC