I really think there should be some kind of AbstractSoundSource that hold a sound an requires it's subclass (Engine) to implement position(). This way we bloat up the interface of Ship too much. The sound an engine makes should be no concern of the ship at all.