     (if (not= v tt)
       (do
         (make-def "tt" (update-in @tt [:support-for] (fn [x y] (cons y x)) v))
-        (make-def k (update-in @v [:supported-by] (fn [x y] y) tt)))))
-  
-  ;; (doseq [l *blocks*]
-  ;;   (let [n (:name l)]
-  ;;     (make-def n l)))
-  
-  ;; (doseq [l (rest *blocks*)
-  ;;         :let [tt (first *blocks*)]]
-
-  ;;   ;; (make-def (:name tt))
-  ;;   (reset! tt (update-in @tt [:support-for] (fn [x y] (cons y x)) l))
-  ;;   ;; (make-def (:name l))
-  ;;   (reset! l (update-in @l [:supported-by] (fn [x y] y) tt))
-  ;;   )
-  )
+        (make-def k (update-in @v [:supported-by] (fn [x y] y) tt))))))
+
 (reset-world)
-;;(println (block_map "b2"))
+
 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

         max-offset (+ 1 (- (:width @support)
                            (:width @object)))
         hit nil]

    ;; (println "-->" (intersections-p object curr-offset
    ;;                                 (first (:position @support))
    ;;                                 (:support-for @support)))
    
    (cond (or (= curr-offset max-offset) (not= nil hit)) hit
          :else (if (not (intersections-p object curr-offset
                                        (first (:position @support))

    (list (+ posx  (/ w 2)) (+ posy h))))

(defn intersections-p [object offset base obstacles]
  (let [hit nil]
    (loop [obstacle obstacles
           hit nil]
      (if (or (empty? obstacle) (= true hit))
        hit
        (let [o (first obstacle)
