use typewiselite
pass in the compare function
6.3.17