Removed duplicated code with Framework
Functional programming
Fixed api naming
Adjusting project structure