   pull apart the constituents and apply a `raw-validation`,
   returning back the validation result vector"
   [t validation-vec]
-  (let [[coordinates validations] validation-vec
-        [validation-fn opt-map] validations
-        opt-map (or opt-map {})]
-    (raw-validation t coordinates validation-fn opt-map)))
+  (let [[coordinates validations] validation-vec]
+    (mapcat identity (map (fn [[validation-fn opt-map]]
+                            (raw-validation t coordinatesvalidation-fn (merge {::coordinates coordinates} opt-map)))
+                          (partition-all 2 validations)))))
 
 (defn validation-seq
   "Create a lazy sequence of validating a given data structure

;; ### Ideal usage
;; See the comment block below, but `(validation my-ds ds-rule-vec)`

(defn navigate
  "Fetch the data from within a data structure given coordinates.
  Note: Tuck our internal protocols behind a function for consumption"


  (def valid-paul [[[:name :first] [(fn [t-map data-point opt-map] (and (= data-point "Paul")
                                                                        {:a 1 :b 2}))]]
                   [[:pets 0 0] [::w-pets {:pet-name-starts ""}
                                 (simple-predicate char?)]]
                   ;[[:*] ['degrandis-pets]] ;This is valid, but we can also just write:
                   [:* 'degrandis-pets]])

