add submodule support