     edge.metadata = {} unless edge.metadata
 
     for item, val of metadata
-      edge.metadata[item] = val
+      if val?
+        edge.metadata[item] = val
+      else
+        delete edge.metadata[item]
 
     @emit 'changeEdge', edge, before
     @checkTransactionEnd()

    node.metadata = {} unless node.metadata

    for item, val of metadata
      node.metadata[item] = val

    @emit 'changeNode', node, before
    @checkTransactionEnd()

      continue unless group.name is groupName
      before = clone group.metadata
      for item, val of metadata
        if val?
          group.metadata[item] = val
        else
          delete group.metadata[item]
      @emit 'changeGroup', group, before
    @checkTransactionEnd()

