refactor project structure
Merge branch 'use-promise'