everything works, starting to optimize
massive refactor- yay!