added an alternate implementation
and a mechanism for comparing the two.