Improve the user interface
Correct some bugs
Add documentation using Doxygen