refactor project structure, add common