more work on refactoring the codebase and simplification + modularization
submodule update