update: use submodules