       (wrap narrator "gelesen von: " " u.a. " false)
       (wrap narrator "gelesen von: "))))
 
-(defn- entry-heading-sexp
-  [creator record-id title subtitles name-of-part source-publisher source-date]
+(defmulti entry-heading-sexp (fn [{fmt :format}] fmt))
+(defmethod entry-heading-sexp :ludo
+  [{:keys [creator record-id title subtitles]}]
   (block {:keep-with-next "always"}
-     (bold (wrap creator "" ": " false)
-           (link-to-online-catalog record-id (layout/periodify title)))
-     (when subtitles " ")
-     (layout/render-subtitles subtitles)
-     (wrap name-of-part " ")
-     (when (or source-publisher source-date) " - ")
-     (wrap source-publisher "" (if source-date ", " "") false)
-     (wrap (layout/year source-date))))
+         (bold (link-to-online-catalog record-id (layout/periodify title)))
+         (when subtitles " ")
+         (layout/render-subtitles subtitles)
+         (wrap creator " " "" false)))
+
+(defmethod entry-heading-sexp :default
+  [{:keys [creator record-id title subtitles name-of-part source-publisher source-date]}]
+  (block {:keep-with-next "always"}
+         (bold (wrap creator "" ": " false)
+               (link-to-online-catalog record-id (layout/periodify title)))
+         (when subtitles " ")
+         (layout/render-subtitles subtitles)
+         (wrap name-of-part " ")
+         (when (or source-publisher source-date) " - ")
+         (wrap source-publisher "" (if source-date ", " "") false)
+         (wrap (layout/year source-date))))
 
 (defn- ausleihe [signature]
   (when signature

     (block {:keep-with-previous "always"} (bold "Verkauf:") " " product-number ", " price))))

(defmethod entry-sexp :braille
  [{:keys [creator record-id title subtitles name-of-part source-publisher source-date
           genre-text description producer-brief rucksackbuch? rucksackbuch-number
           library-signature product-number price]}]
  (list-item
   (entry-heading-sexp creator record-id title subtitles name-of-part source-publisher source-date)
   (block (wrap genre-text "Genre: "))
   (block (wrap description))
   (block producer-brief (if rucksackbuch? (str ", Rucksackbuch Nr. " rucksackbuch-number) "") ".")

(defmulti entry-sexp (fn [{fmt :format}] fmt))

(defmethod entry-sexp :hörbuch
  [{:keys [genre-text description duration narrators producer-brief
           produced-commercially? library-signature product-number price] :as item}]
  (list-item
   (entry-heading-sexp item)
   (block (wrap genre-text "Genre: "))
   (block (wrap description))
   (block (wrap duration "" " Min., " false) (narrators-sexp narrators))
