Made sure everything was modular and added getters and setters and added toString, hash and equals