                    [:m3 :bbl]                 #(* % (factors [:m3 :bbl]))}]
     (converter [from to])))
 
+;; I model a measurement as a 2- or 3-item vector. These functions make the intent of some code clearer when
+;; manipulating measurements.
+(defn make-measurement
+  ([magnitude unit] [magnitude unit])
+  ([magnitude unit other] [magnitude unit other]))
+
+(def magnitude first)
+(def unit second)
+(def other last)
+
 (defn as-f [from-unit to-unit factor]
   (fn [[magnitude from] to]
     (condp = [from to]

  #?(:cljs (:require [test-utils.core :as tuc])
     :clj (:require (test-utils [core :as tuc]))))

(def physical-quantities [:densty
                          :energy
                          :force
                          :length

    (tuc/draw-normal mean sigma)))

(defn typical-monitor-pressure
  ([] (typical-monitor-pressure (rand-pressure-unit)))
  ([pressure-unit]
   (let [pressure-magnitude (cond (= pressure-unit :psi) (first (p-mon-seq))
                                  (= pressure-unit :kPa)
                                  (magnitude (pressure-as (typical-monitor-pressure :psi) :kPa)))]
     [pressure-magnitude pressure-unit])))

(defn typical-monitor-temperature
  ([] (let [units (rand-nth [:C :F])]
