add submodule handling