Major Overhaul

Overhauled a lot of code to add more structure and make it easier to
create the experiments I'd like to do