Add submodule framework