   ITimeArithmetic
   (+ [t x] (.plus t x))
   (- [t x] (.minus t x))
+
+  ITimeIncDec
   (inc [t] (+ t (seconds 1)))
   (dec [t] (- t (seconds 1)))
-  (maximum [x y] (if (neg? (compare x y)) y x))
-  (minimum [x y] (if (neg? (compare x y)) x y))
+
   ITimeRangeable
   (range
     ([from] (iterate #(.plusSeconds % 1) from))

  ITimeArithmetic
  (+ [t x] (.plus t x))
  (- [t x] (.minus t x))
  (inc [t] (+ t (seconds 1)))
  (dec [t] (- t (seconds 1)))
  ;; TODO: Rename maximum to 'greater' and minimum to 'lesser'
  (maximum [x y] (if (neg? (compare x y)) y x))
  (minimum [x y] (if (neg? (compare x y)) x y))
  ITimeRangeable
  (range
    ([from] (iterate #(.plusSeconds % 1) from))

  ITimeArithmetic
  (+ [t x] (.plus t x))
  (- [t x] (.minus t x))

  ITimeIncDec
  (inc [t] (.plusYears t 1))
  (dec [t] (.minusYears t 1))

  ITimeRangeable
  (range
    ([from] (iterate #(.plusYears % 1) from))
