Huge refactor. Less code, moar fun