default to deep equals