refactored event ship components into two base classes so each particular ship type's code is much more concise