add comparator and comparable