Another minor rewrite, each module now gets its own rooted require function