The source code has been deeply improved