added comparison and equality