improved submodule loading