A rewrite of the algorithm in Java with optimization and improvements to make the code more versatile. The documentation is more thorough and the code is more organized to make it easier to evolve the project in the future.