refine equals()