                ['image {:id id} submorphs] (om/build render-image [props submorphs] {:react-key id})
                ['polygon {:id id} submorphs] (om/build render-polygon [props submorphs] {:react-key id})
                ['io {:id id} submorphs] (om/build render-io-morph [props submorphs] {:react-key id})
-               :else (prn "Can not render: " expr))))))
+               :else (prn "Can not render: " morph))))
 
 (defn render-rectangle [[props submorphs]]
   (reify

    new-worlds))

(om/root
 render-root
 world-state
 {:target (. js/document (getElementById "app"))
  :tx-listen (fn [tx-data world-state])})
(defn render-placeholder [morph]
  nil) ; render nothing. Its fine.

(defmulti render 
  "render function, that traverses a morph tree and derives
  a tree of om-components"
  (fn [expr ns]
    (ast-type expr)))

(defmethod render :expr [expr]
  (let [morph (-> expr meta :expanded-expression)] 
    (render morph)))

(defmethod render :vector [morphs]
  (apply dom/div nil (map render morphs)))

(defmethod render :morph [morph]
  (let [[self props & args] morph
            props (merge props (-> morph meta :compiled-props))] 
          (match [self props args]
               ['rectangle {:id id} submorphs] (om/build render-rectangle [props submorphs] {:react-key id})
               ['ellipse {:id id} submorphs] (om/build render-ellipse [props submorphs] {:react-key id})
