      string? (LocalDateTime/parse x)
      keyword? (local-date-time-keywords x)
      :else (LocalDateTime/from x)))
-  ([a b]
-   (cond
-     (and (local-date? a) (local-time? b)) (LocalDateTime/of a b)
-     (instant? a) (LocalDateTime/ofInstant a (zone-id b))
-     :else (LocalDateTime/parse a b)))
+  ([date-or-instant-or-text time-or-zone-or-formatter]
+   (pred-cond date-or-instant-or-text
+     local-date? (LocalDateTime/of
+                   date-or-instant-or-text
+                   time-or-zone-or-formatter)
+     instant? (LocalDateTime/ofInstant
+                date-or-instant-or-text
+                (zone-id time-or-zone-or-formatter))
+     :else (LocalDateTime/parse
+             date-or-instant-or-text
+             time-or-zone-or-formatter)))
   ([year month day-of-month hour minute]
    (LocalDateTime/of year month day-of-month hour minute))
   ([year month day-of-month hour minute second]
    (LocalDateTime/of year month day-of-month hour minute second))
   ([year month day-of-month hour minute second nano-of-second]
-   (LocalDateTime/of year month day-of-month hour minute second nano-of-second)))
+   (LocalDateTime/of year month day-of-month hour minute second
+                     nano-of-second)))
 
 (defn offset-date-time
   ([]

     zone-id? (ZonedDateTime/now x)
     string? (ZonedDateTime/parse x)
     :else (ZonedDateTime/from x)))
  ([a b]
   (pred-cond a
     local-date-time? (ZonedDateTime/of a (zone-id b))
     instant? (ZonedDateTime/ofInstant a (zone-id b))
     :else (ZonedDateTime/parse a b)))
  ([local-date-time zone preferred-zone]
   (ZonedDateTime/ofLocal local-date-time zone preferred-zone))
  ([year month day-of-month hour minute second nano-of-second zone]

   (if (string? x)
       (Duration/parse x)
       (Duration/from x)))
  ([start-inclusive end-exclusive]
   (Duration/between start-inclusive end-exclusive)))

(defn period
  ([x]
