replaced default <=> method