added deep object comparison