refactor, abstract main file into multiple files'
modified files