Major refactor, everything is now in classes