The First version after big merging, it now can run basically well