added new submodules
clean up
moved functions to separated modules