each module gets its own router