Originally developed by Jason Hickey and Alex Norgin. Now maintained by Hongbo Zhang(bobzhang1988@gmail.com) Performance improvements by Gerd Stolpmann <gerd@gerd-stolpmann.de>