splitted the project into three modules