Add a ModeType enum for later benefit
Implement module interface and base classes