Started comprehensive compare function