           children.on(
             "destroy"
             =>
-              delete childrens[category_name]
-              unless _(childrens).keys().length || @get("label")
-                @destroy()
+              if _(children.get("childrens")).keys().length > 0
+                delete children.get("label")
+                children.set "label", undefined
+              else
+                delete childrens[category_name]
+                unless _(childrens).keys().length || @get("label")
+                  @destroy()
           )
           childrens[category_name] = children
           @set "childrens", childrens


        # rec
        childrens[category_name].parse_labels_recursive_func.call childrens[category_name], next_label_name, label

      set_label: (label)->
        @set "label", label

            "change"
            (target)=>
              root = @root()
              if target.get("name") != target.previous("name")
                prev_name = target.previous("name")
                removed_label = root.query(prev_name)
                removed_label.destroy()
                root.parse_labels_recursive_func target.get("name"), target
          )
          label.on(
            "remove"
