refactored ship