refactor project structure, add maven support