using it's own version of the same basic algorithm. Submitted by: part by Cyrille Lefevre, part of it done by me