 
 (defn- add-node
   "Adds a node to scn at position [x y]."
-  [#^GScene scn, x, y, name, [upper-label lower-label]]
-  (let [#^GSegment upper-segment (GSegment.),
-	#^GSegment lower-segment (GSegment.),
+  [^GScene scn, x, y, name, [upper-label lower-label]]
+  (let [^GSegment upper-segment (GSegment.),
+	^GSegment lower-segment (GSegment.),
 	object (proxy [GObject] []
 		 (draw []
 		   (let [upper-style (if (= 1 (-?> this upper-neighbors count))


(defn move-node-unchecked-to
  "Moves node to [new-x new-y]."
  [#^GObject node, new-x, new-y]
  ;; update self position
  (dosync
   (alter (.getUserData node) assoc :position [new-x new-y]))

				     (.refresh scn))),
	   GWindow/BUTTON1_UP    (do
				   (call-hook-with scn :move-stop @interaction-obj)
				   (reset! interaction-obj nil)),
           GWindow/BUTTON3_DOWN  (let [thing (.find scn x y)]
                                   (when (node? thing)
                                     (toggle-highlight thing)
                                     (.refresh scn))),
	   nil)))))

(defn zoom-interaction
