add ModuleRouter struct