 
         # rec
         childrens[category_name].parse_labels_recursive_func.call childrens[category_name], next_label_name, label
+
+      query: (label_name)->
+        # label_name example: "category/..."
+        category_name = if /\//.test(label_name) then label_name.match(/([^\/]*)\//)[1] else label_name
+        next_label_name = label_name.substring category_name.length + 1
+        unless /\//.test label_name
+          return @children(category_name)
+        else
+          return @children(category_name).query(next_label_name)
 
       set_label: (label)->
         @set "label", label

            "change"
            (target)=>
              root = @root()
              @destroy()
              root.parse_labels_recursive_func target.get("name"), target
          )
          label.on(
            "remove"

          children.on(
            "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
