Adding exceptions and changing Ship interface