rebuilt the project, decoupled some files in src/demo/