Improve documentation, especially algorithm's description