Switch to use submodule to improve maintainability