seperated some of the ship functionality into seperate classes