                    [: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]

    (tuc/draw-normal mean sigma)))

(defn typical-monitor-pressure
  ([units]
   (cond (= units :psi)
         (first (p-mon-seq))
         (= units :kPa)
         ((convert-units-f :psi :kPa) (typical-monitor-pressure :psi))
         (= units :MPa)
         ((convert-units-f :kPa :MPa) (typical-monitor-pressure :kPa))))
  ([] (let [unit (rand-pressure-unit)]
        [unit (typical-monitor-pressure unit)])))

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

   (cond (= units :psi)
         (value-from-typical-range 5000 9000)
         (= units :kPa)
         ((convert-units-f :psi :kPa) (typical-monitor-pressure :psi)))))

(defn surface-treating-pressure-seq [arg]
  (cond (int? arg)
