redoing implementation of comparison operators