add compareTo()