Use factory classes so we can cache the module config