refactor code and split project
refactor code and split project