add custom compare support

allows for comparison of more complicated objects