move ship factory methods to separate files