    3. A basic PrintJobListener that prints any events that occur
    on the DocPrintJob."
   {:since "0.0.1"}
-  (fn [spec] (apply (some-fn #{:doc} #{:docs}) (keys spec))))
+  (fn [spec] (some spec [:doc :docs])))
 
 (defmethod make-job :doc [spec]
   (let [{:keys [^PrintService printer ^PrintJobListener listener doc attrs]} spec
         {doc-attrs :attrs} doc]
-    (if (and (valid-attrs? doc-attrs :doc)
+    (when (and (valid-attrs? doc-attrs :doc)
              (valid-attrs? attrs :job))
       (letfn [(add-doc [spec]
                 (assoc-in spec [:doc :obj] (delay (make-doc doc))))
               (add-job [spec]
                 (assoc-in spec [:job] (.. printer createPrintJob)))]
-        (-> spec add-doc add-job map->JobSpec)))))
+        (-> spec
+            (add-doc)
+            (add-job)
+            (map->JobSpec))))))
 
 (defmethod make-job :docs [spec]
   (let [{docs :docs} spec]
     (for [doc docs]
-      (-> spec (dissoc :docs) (assoc :doc doc) make-job))))
+      (-> spec
+          (dissoc :docs)
+          (assoc :doc doc)
+          (make-job)))))
 
 ;; Old method of encapsulating a 'MultiJobSpec', most
 ;; values in a JobSpec will be singleton instances

           (javax.print.event PrintJobListener)))

;; TODO: Write 'test' function that prints a test page when invoked on printer.
;; TODO: What is gen-class good for?

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; Util ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;


  "Returns the printer with the specified name from PrintServiceLookup.
   With no arguments, returns the system default printer."
  {:since "0.0.1"}
  ([] (printer :default))
  ([name]
     (cond
      (= :default name) (PrintServiceLookup/lookupDefaultPrintService)
      (string? name) (let [pname-obj (PrinterName. name nil)
                       attrs  (make-set #{pname-obj} :attr)] 
                   (some (fn [^PrintService p]
                           (when (= name (.. p getName)) p))
