splitted into submodules
reduction of self uses