update project structure and add more code