Base code
Doc precisions
Add many tests
Refactor to pass the tests
Updating documentation