   (let [passed-arg-keys (set (keys passed-args))]
     (and (args-names-valid?     (:names        arg-defs) passed-arg-keys)
          (required-args-passed? (:required     arg-defs) passed-arg-keys)
-         (validate-fns-pass-GR? (:validate-fns arg-defs) passed-args))))
+         (validate-fns-pass?    (:validate-fns arg-defs) passed-args))))
 
 
 ;; ----------------------------------------------------------------------------

(defn args-names-valid?
  "Checks that arg names passed in are all one of the expected ones. If so, returns true. Prints errors to console."
  [defined-args passed-args]
  (if (superset? defined-args passed-args)
    true
    (let [missing-args (remove defined-args passed-args)]
      (log-error "Invalid arguments: " missing-args))))

(defn required-args-passed?
  "Checks that all :required args are included in the arg list. If so, returns true. Prints errors to console"
  [required-args passed-args]
  (if (superset? passed-args required-args)
    true
    (let [missing-args (remove passed-args required-args)]
      (log-error "Missing required arguments: " missing-args))))

(defn validate-fns-pass-GR?
  "Call validate-fn for each arg that has one (and only if the arg was actually passed). Return true if ALL were successful. Prints errors to console.
  NOTE: Return value for validate-fn is boolean (with a twist):
         - true:   validation success

  "Converts obj to a string and truncates it to max-len chars if necessary.
   When truncation is necessary, adds an elipsis to the end."
  [obj max-len]
  (gstring/truncate (str obj) max-len))

(defn log-error
  "Sends a message to the DeV Tools console as an error."
