       this_node.removeNode(@selected.node)
       other_node.addNode(@selected.node)
 
-    super(pos,t)
+    return_value = super(pos,t)
+    
+    updateFn = (node) ->
+      if node.update?
+        node.update()
+    
+    for n in @nodes
+      n.forAll(updateFn)
+
+    return return_value
 
   clickend: (pos, t) ->
-    @splitting = node: @selected.node, pos0: pos, pos1: pos
+    if @selected.node.contains.length > 1
+      @splitting = node: @selected.node, pos0: pos, pos1: pos
 
   splitNode: (node, pos0, pos1) ->
     new0 = new ShannonFanoNode(node.contains, @shape, @defaultBBoxAt(pos0), 0)


      @x = (maxx+minx)/2
      @y = (maxy+miny)/2
      @len_x = maxx-minx+default_node_radius*2
      @len_y = maxy-miny+default_node_radius*3
    else
      @len_x = @default_bbox.len.x
      @len_y = @default_bbox.len.y


    setStyle(ctx, node_text_style)
    ctx.textAlign = 'center'
    ctx.textBaseline = 'bottom'

    ctx.fillText(@value, 0, -@len_y/2)

    ctx.restore()

