Initial version with submodules