Refactoring the code
Merge branch 'refactor' into lee
Merge branch 'lee' into develop