Refactor code to make it more undestandable. Crete doc. Merge modules. add unit test
Refactor code to make it more undestandable. Crete doc. Merge modules. add unit test