CompareTo implementation finished