restruct the whole project.