Refractored code, cleaned up code, and seperated objects into different files.