void QmitkDataStorageTreeModel::RemoveNodeInternal( const mitk::DataNode* node )
{
    if(!m_Root) return;

    TreeItem* treeItem = m_Root->Find(node);
    if(!treeItem)
      return; // return because there is no treeitem containing this node

    TreeItem* parentTreeItem = treeItem->GetParent();
    QModelIndex parentIndex = this->IndexFromTreeItem(parentTreeItem);

    // emit beginRemoveRows event (QModelIndex is empty because we dont have a tree model)
    this->beginRemoveRows(parentIndex, treeItem->GetIndex(), treeItem->GetIndex());

    // remove node
    std::vector<TreeItem*> children = treeItem->GetChildren();
    delete treeItem;

    // emit endRemoveRows event
    endRemoveRows();

    // move all children of deleted node into its parent
    for ( std::vector<TreeItem*>::iterator it = children.begin()
      ; it != children.end(); it++)
    {
      // emit beginInsertRows event
      beginInsertRows(parentIndex, parentTreeItem->GetChildCount(), parentTreeItem->GetChildCount());

      // add nodes again
      parentTreeItem->AddChild(*it);

      // emit endInsertRows event
      endInsertRows();
    }

    this->AdjustLayerProperty();
}