Code cleanup.

* Add missing mlis with some kind of documentation.
* Simplify the API
* Improve the tests
Fix .gitignore