 
 (def row-cells (comp-tag tr td))
 
-(defn table-rows [& rows] (table (map #(row-cells (flatten %)) rows)))
-
-(defn radio-list [param & opts]
-	(mapcat (fn [[t v]] [(label v {:for t}) (input {:id v :value v :name param :type "radio"})]) opts))
+(defn table-rows [& rows] (table (map (comp row-cells flatten) rows)))
+
+(defn radio-list [param & opts] (mapcat (fn [[text value]] [(radio param value) (label text {:for value})]) (partition 2 opts)))
+
+(defn vertical-radio-list [param & opts] (apply table-rows (partition 2 (apply radio-list param opts))))
 
 ;; CSS Units
 


(defdecorator transition-property [x] (:transition-property x :-moz-transition-property x :-webkit-transition-property x :-o-transition-property x))

; linear-gradient
(defdecorator gradient [d c1 c2] (
	:background-color c1
	:background-image (linear-gradient d c1 c2)
	:background-image (-webkit-linear-gradient d c1 c2)))


(defn page-meta [prop value] (tag "meta" {:name prop :content value}))

(defn radio [param value] (input {:name param :id value :value value :type "radio"}))

;; Higher-order "tags"

(defn comp-tag [t u] (fn [& items] (t (map u (flatten items)))))
