integrated with recent changes in submodules