 
 (extend-type LocalDate
   ITimeArithmetic
-  (+ [t x] (if (number? x) (.plusDays t x) (.plus t x)))
-  (- [t x] (if (number? x) (.minusDays t x) (.minus t x)))
+  (+ [t x] (.plus t x))
+  (- [t x] (.minus t x))
   (inc [t] (.plusDays t 1))
   (dec [t] (.minusDays t 1))
   (maximum [x y] (if (neg? (compare x y)) y x))


(extend-type Year
  ITimeArithmetic
  (+ [t x] (if (number? x) (.plusYears t x) (.plus t x)))
  (- [t x] (if (number? x) (.minusYears t x) (.minus t x)))
  (inc [t] (.plusYears t 1))
  (dec [t] (.minusYears t 1))
  (maximum [x y] (if (neg? (compare x y)) y x))

    ([from to step] (cond->> (iterate #(.plusDays % step) from)
                      to (take-while #(< % to))))))

(defn tomorrow []
  (inc (today)))

(defn yesterday []
  (dec (today)))

(extend-type LocalDateTime
  ITimeArithmetic
  (+ [t x] (.plus t x))
