Broke out everything, now it should be easier to refactor