removed requirement to use comparable interface