Refactoring & documentation

Refactoring the project and add new documentation