Refactored engine types, more consistent base types and some separation