       (or (define-color-channel specs offset fine-offset)
           (define-dimmer-channel specs offset fine-offset)
           (define-pan-tilt-channel specs offset fine-offset)
+          (some (partial define-named-channel specs offset fine-offset) ["focus" "frost" "iris" "zoom"])
           (str "(chan/fine-channel " (keyword (sanitize-name (:name specs))) " " offset
                (when fine-offset (str " :fine-offset " fine-offset))
                "\n                                 :function-name \"" (:name specs)

  (when (and (= "Intensity" (:group specs)) (re-find #"(?i)dimmer" (:name specs)))
    (str "(chan/dimmer " offset (when fine-offset (str " " fine-offset)) ")")))

(defn- define-pan-tilt-channel
  "If the supplied channel specification map seems to be a pan or tilt
  channel, emit a function which defines it at the specified offsets."

  "Converts a map read by [[convert-qxf]] into an Afterglow fixture
  definition."
  [qxf]
  (parser/render-file "fixture-definition.clj" qxf))

(defn parse-qxf
