First working draft
Add more tests
Increase the coverage