                        (= retina-type :dichromat) [1]
                        :else (throw (IllegalArgumentException. "invalid type")))
           S-cone-flags (get plan :S-cone-flags [:human])
-          retina-size (get plan :sizes [20])
-          blur (get plan :blurs [nil])
+          mosaic mosaics
           lmaxs (loop [q cone-lambda-maxs, res #{}]
                   (if (nil? q)
                     (if (= S-cone-flags :none)

              L-lambda-max (get plan :L-lambda-maxs [558.9])
              S-lambda-max (get plan :S-lambda-maxs [420.7])
              A-lambda-max (get plan :A-lambda-maxs [545.0])]
          {:L L-lambda-max :M M-lambda-max :S S-lambda-max :A A-lambda-max})]
    (for [retina-type (get plan :types [:trichromat])
          surround (get plan :surrounds [[0.25 3.0]])
          L-to-M (cond (= retina-type :trichromat) (get plan :L-to-Ms [[1 1]])

                                       (= retina-type :dichromat) (dissoc (first q) :A :M))))))]
      (retina :type retina-type
              :surround surround
              :mosaic mosaic
              :cones (cond (= retina-type :trichromat) [:L :M :S]
                           (= retina-type :tetrachromat) [:L :A :M :S]
                           (= retina-type :dichromat) [:L :S])
