Refactoring code
Added some new tests
Code refactoring
Code refactoring