now start to restruct the whole project