diff --git a/src/plugins/qmldesigner/components/formeditor/abstractformeditortool.cpp b/src/plugins/qmldesigner/components/formeditor/abstractformeditortool.cpp
index 5a7c1657b81fc4809603d2a052d109df22ef9cef..c1d29e02b6a278500aacb96b82a8be1e200ac7ee 100644
--- a/src/plugins/qmldesigner/components/formeditor/abstractformeditortool.cpp
+++ b/src/plugins/qmldesigner/components/formeditor/abstractformeditortool.cpp
@@ -84,7 +84,7 @@ bool AbstractFormEditorTool::topItemIsMovable(const QList<QGraphicsItem*> & item
         return false;
 
     FormEditorItem *formEditorItem = FormEditorItem::fromQGraphicsItem(firstSelectableItem);
-    QList<QmlItemNode> selectedNodes = view()->selectedQmlItemNodes();
+    QList<ModelNode> selectedNodes = view()->selectedModelNodes();
 
     if (formEditorItem != 0
        && selectedNodes.contains(formEditorItem->qmlItemNode()))
@@ -96,7 +96,7 @@ bool AbstractFormEditorTool::topItemIsMovable(const QList<QGraphicsItem*> & item
 
 bool AbstractFormEditorTool::topSelectedItemIsMovable(const QList<QGraphicsItem*> &itemList)
 {
-    QList<QmlItemNode> selectedNodes = view()->selectedQmlItemNodes();
+    QList<ModelNode> selectedNodes = view()->selectedModelNodes();
 
     foreach (QGraphicsItem *item, itemList) {
         FormEditorItem *formEditorItem = FormEditorItem::fromQGraphicsItem(item);
diff --git a/src/plugins/qmldesigner/components/formeditor/dragtool.cpp b/src/plugins/qmldesigner/components/formeditor/dragtool.cpp
index 2e582016617214790ca4b19fed35a191bbb53f11..6d36cdbb27599aabf188ea17c8df01ceead5760b 100644
--- a/src/plugins/qmldesigner/components/formeditor/dragtool.cpp
+++ b/src/plugins/qmldesigner/components/formeditor/dragtool.cpp
@@ -285,7 +285,7 @@ void DragTool::dropEvent(QGraphicsSceneDragDropEvent * event)
         if (m_dragNode.isValid()) {
             QList<QmlItemNode> nodeList;
             nodeList.append(m_dragNode);
-            view()->setSelectedQmlItemNodes(nodeList);
+            view()->setSelectedModelNodes(toModelNodeList(nodeList));
         }
         m_dragNode = ModelNode();
         view()->changeToSelectionTool();
@@ -345,7 +345,7 @@ void DragTool::dragLeaveEvent(QGraphicsSceneDragDropEvent * event)
 
         QmlDesignerItemLibraryDragAndDrop::CustomDragAndDrop::show();
         QList<QmlItemNode> nodeList;
-        view()->setSelectedQmlItemNodes(nodeList);
+        view()->setSelectedModelNodes(toModelNodeList(nodeList));
         view()->changeToSelectionTool();
     }
 }
diff --git a/src/plugins/qmldesigner/components/formeditor/formeditorview.cpp b/src/plugins/qmldesigner/components/formeditor/formeditorview.cpp
index 789ffc1dd342a0a77f98339bdc1ad8bcf5c405d8..958dfcbb944b3a2b4cdd627515fc02b966614d48 100644
--- a/src/plugins/qmldesigner/components/formeditor/formeditorview.cpp
+++ b/src/plugins/qmldesigner/components/formeditor/formeditorview.cpp
@@ -213,7 +213,7 @@ void FormEditorView::nodeAboutToBeRemoved(const ModelNode &removedNode)
      if (newItemNode.isValid()) //only setup QmlItems
          setupFormEditorItemTree(newItemNode);
 
-     m_currentTool->setItems(scene()->itemsForQmlItemNodes(selectedQmlItemNodes()));
+     m_currentTool->setItems(scene()->itemsForQmlItemNodes(toQmlItemNodeList(selectedModelNodes())));
  }
 
 void FormEditorView::propertiesAboutToBeRemoved(const QList<AbstractProperty>& propertyList)
@@ -331,7 +331,7 @@ bool FormEditorView::changeToMoveTool()
     m_currentTool->clear();
     m_currentTool = m_moveTool;
     m_currentTool->clear();
-    m_currentTool->setItems(scene()->itemsForQmlItemNodes(selectedQmlItemNodes()));
+    m_currentTool->setItems(scene()->itemsForQmlItemNodes(toQmlItemNodeList(selectedModelNodes())));
     return true;
 }
 
@@ -344,7 +344,7 @@ void FormEditorView::changeToDragTool()
     m_currentTool->clear();
     m_currentTool = m_dragTool;
     m_currentTool->clear();
-    m_currentTool->setItems(scene()->itemsForQmlItemNodes(selectedQmlItemNodes()));
+    m_currentTool->setItems(scene()->itemsForQmlItemNodes(toQmlItemNodeList(selectedModelNodes())));
 }
 
 
@@ -360,7 +360,7 @@ bool FormEditorView::changeToMoveTool(const QPointF &beginPoint)
     m_currentTool->clear();
     m_currentTool = m_moveTool;
     m_currentTool->clear();
-    m_currentTool->setItems(scene()->itemsForQmlItemNodes(selectedQmlItemNodes()));
+    m_currentTool->setItems(scene()->itemsForQmlItemNodes(toQmlItemNodeList(selectedModelNodes())));
     m_moveTool->beginWithPoint(beginPoint);
     return true;
 }
@@ -374,7 +374,7 @@ void FormEditorView::changeToSelectionTool()
     m_currentTool->clear();
     m_currentTool = m_selectionTool;
     m_currentTool->clear();
-    m_currentTool->setItems(scene()->itemsForQmlItemNodes(selectedQmlItemNodes()));
+    m_currentTool->setItems(scene()->itemsForQmlItemNodes(toQmlItemNodeList(selectedModelNodes())));
 }
 
 void FormEditorView::changeToSelectionTool(QGraphicsSceneMouseEvent *event)
@@ -386,7 +386,7 @@ void FormEditorView::changeToSelectionTool(QGraphicsSceneMouseEvent *event)
     m_currentTool->clear();
     m_currentTool = m_selectionTool;
     m_currentTool->clear();
-    m_currentTool->setItems(scene()->itemsForQmlItemNodes(selectedQmlItemNodes()));
+    m_currentTool->setItems(scene()->itemsForQmlItemNodes(toQmlItemNodeList(selectedModelNodes())));
 
     m_selectionTool->selectUnderPoint(event);
 }
@@ -400,7 +400,7 @@ void FormEditorView::changeToResizeTool()
     m_currentTool->clear();
     m_currentTool = m_resizeTool;
     m_currentTool->clear();
-    m_currentTool->setItems(scene()->itemsForQmlItemNodes(selectedQmlItemNodes()));
+    m_currentTool->setItems(scene()->itemsForQmlItemNodes(toQmlItemNodeList(selectedModelNodes())));
 }
 
 void FormEditorView::changeToTransformTools()
@@ -434,7 +434,7 @@ void FormEditorView::changeToCustomTool()
             m_currentTool->clear();
             m_currentTool = selectedCustomTool;
             m_currentTool->clear();
-            m_currentTool->setItems(scene()->itemsForQmlItemNodes(selectedQmlItemNodes()));
+            m_currentTool->setItems(scene()->itemsForQmlItemNodes(toQmlItemNodeList(selectedModelNodes())));
         }
     }
 }
@@ -445,7 +445,7 @@ void FormEditorView::changeToCustomTool(AbstractCustomTool *customTool)
     m_currentTool->clear();
     m_currentTool = customTool;
     m_currentTool->clear();
-    m_currentTool->setItems(scene()->itemsForQmlItemNodes(selectedQmlItemNodes()));
+    m_currentTool->setItems(scene()->itemsForQmlItemNodes(toQmlItemNodeList(selectedModelNodes())));
 }
 
 void FormEditorView::registerTool(AbstractCustomTool *tool)
@@ -627,9 +627,12 @@ void FormEditorView::setSelectOnlyContentItemsAction(bool selectOnlyContentItems
 
 bool FormEditorView::isMoveToolAvailable() const
 {
-    if (selectedQmlItemNodes().count() == 1)
-        return selectedQmlItemNodes().first().instanceIsMovable() &&
-               !selectedQmlItemNodes().first().instanceIsInLayoutable();
+    if (hasSingleSelectedModelNode() && QmlItemNode::isValidQmlItemNode(singleSelectedModelNode())) {
+        QmlItemNode selectedQmlItemNode(singleSelectedModelNode());
+        return selectedQmlItemNode.instanceIsMovable() &&
+               !selectedQmlItemNode.instanceIsInLayoutable();
+    }
+
     return true;
 }
 
diff --git a/src/plugins/qmldesigner/components/formeditor/rubberbandselectionmanipulator.cpp b/src/plugins/qmldesigner/components/formeditor/rubberbandselectionmanipulator.cpp
index 1a33b4e04ac15263e825fc6cc670e8405c144175..c6a3b4ba1453de8f432ce317d15a70765cb6c99f 100644
--- a/src/plugins/qmldesigner/components/formeditor/rubberbandselectionmanipulator.cpp
+++ b/src/plugins/qmldesigner/components/formeditor/rubberbandselectionmanipulator.cpp
@@ -72,7 +72,7 @@ void RubberBandSelectionManipulator::begin(const QPointF& beginPoint)
     m_selectionRectangleElement.show();
     m_isActive = true;
     m_beginFormEditorItem = topFormEditorItem(m_editorView->scene()->items(beginPoint));
-    m_oldSelectionList = m_editorView->selectedQmlItemNodes();
+    m_oldSelectionList = toQmlItemNodeList(m_editorView->selectedModelNodes());
 }
 
 void RubberBandSelectionManipulator::update(const QPointF& updatePoint)
@@ -134,7 +134,7 @@ void RubberBandSelectionManipulator::select(SelectionType selectionType)
         }
     }
 
-    m_editorView->setSelectedQmlItemNodes(nodeList);
+    m_editorView->setSelectedModelNodes(toModelNodeList(nodeList));
 }
 
 
diff --git a/src/plugins/qmldesigner/components/formeditor/singleselectionmanipulator.cpp b/src/plugins/qmldesigner/components/formeditor/singleselectionmanipulator.cpp
index fedccd62e207dc7e55ae8243f852bdfdf641f701..34441dd5cdda900f04adbba79ae897d8d0f16ce5 100644
--- a/src/plugins/qmldesigner/components/formeditor/singleselectionmanipulator.cpp
+++ b/src/plugins/qmldesigner/components/formeditor/singleselectionmanipulator.cpp
@@ -46,7 +46,7 @@ void SingleSelectionManipulator::begin(const QPointF &beginPoint)
 {
     m_beginPoint = beginPoint;
     m_isActive = true;
-    m_oldSelectionList = m_editorView->selectedQmlItemNodes();
+    m_oldSelectionList = toQmlItemNodeList(m_editorView->selectedModelNodes());
 }
 
 void SingleSelectionManipulator::update(const QPointF &/*updatePoint*/)
@@ -113,7 +113,7 @@ void SingleSelectionManipulator::select(SelectionType selectionType, bool select
         }
     }
 
-    m_editorView->setSelectedQmlItemNodes(nodeList);
+    m_editorView->setSelectedModelNodes(toModelNodeList(nodeList));
 }
 
 
diff --git a/src/plugins/qmldesigner/designercore/include/qmlmodelview.h b/src/plugins/qmldesigner/designercore/include/qmlmodelview.h
index 1d905f97e83345867f7efbf044ac6ece573ea7b5..fc6efbbfd04ad1682f7a84105cc2c1db8406dc61 100644
--- a/src/plugins/qmldesigner/designercore/include/qmlmodelview.h
+++ b/src/plugins/qmldesigner/designercore/include/qmlmodelview.h
@@ -61,19 +61,8 @@ public:
     QmlItemNode createQmlItemNode(const ItemLibraryEntry &itemLibraryEntry, const QPointF &position, QmlItemNode parentNode);
     QmlItemNode createQmlItemNodeFromImage(const QString &imageName, const QPointF &position, QmlItemNode parentNode);
 
-    QmlObjectNode rootQmlObjectNode() const;
     QmlItemNode rootQmlItemNode() const;
 
-    void setSelectedQmlObjectNodes(const QList<QmlObjectNode> &selectedNodeList);
-    void setSelectedQmlItemNodes(const QList<QmlItemNode> &selectedNodeList);
-    void selectQmlObjectNode(const QmlObjectNode &node);
-    void deselectQmlObjectNode(const QmlObjectNode &node);
-
-    QList<QmlObjectNode> selectedQmlObjectNodes() const;
-    QList<QmlItemNode> selectedQmlItemNodes() const;
-
-    QmlObjectNode fxObjectNodeForId(const QString &id);
-
     void modelAttached(Model *model) QTC_OVERRIDE;
     void modelAboutToBeDetached(Model *model) QTC_OVERRIDE;
 
diff --git a/src/plugins/qmldesigner/designercore/model/qmlitemnode.cpp b/src/plugins/qmldesigner/designercore/model/qmlitemnode.cpp
index 22b6a98b86cc58e38ebc961c27acffd4e6c48ea7..24cfcd5a5dca7b259cdfa3e0b791ece711d58edc 100644
--- a/src/plugins/qmldesigner/designercore/model/qmlitemnode.cpp
+++ b/src/plugins/qmldesigner/designercore/model/qmlitemnode.cpp
@@ -400,9 +400,8 @@ QList<QmlItemNode> toQmlItemNodeList(const QList<ModelNode> &modelNodeList)
     QList<QmlItemNode> qmlItemNodeList;
 
     foreach (const ModelNode &modelNode, modelNodeList) {
-        QmlItemNode itemNode(modelNode);
-        if (itemNode.isValid())
-            qmlItemNodeList.append(itemNode);
+        if (QmlItemNode::isValidQmlItemNode(modelNode))
+            qmlItemNodeList.append(modelNode);
     }
 
     return qmlItemNodeList;
diff --git a/src/plugins/qmldesigner/designercore/model/qmlmodelview.cpp b/src/plugins/qmldesigner/designercore/model/qmlmodelview.cpp
index 42c9c7082d2a3fe8d05f8b9f5008c0537f8786e4..06b962da66f18bbc0c918159e959648b3f376259 100644
--- a/src/plugins/qmldesigner/designercore/model/qmlmodelview.cpp
+++ b/src/plugins/qmldesigner/designercore/model/qmlmodelview.cpp
@@ -270,49 +270,9 @@ QmlItemNode QmlModelView::createQmlItemNode(const ItemLibraryEntry &itemLibraryE
     return newQmlItemNode;
 }
 
-QmlObjectNode QmlModelView::rootQmlObjectNode() const
-{
-    return QmlObjectNode(rootModelNode());
-}
-
 QmlItemNode QmlModelView::rootQmlItemNode() const
 {
-    return rootQmlObjectNode().toQmlItemNode();
-}
-
-void QmlModelView::setSelectedQmlObjectNodes(const QList<QmlObjectNode> &selectedNodeList)
-{
-    setSelectedModelNodes(QmlDesigner::toModelNodeList(selectedNodeList));
-}
-
-void QmlModelView::selectQmlObjectNode(const QmlObjectNode &node)
-{
-     selectModelNode(node.modelNode());
-}
-
-void QmlModelView::deselectQmlObjectNode(const QmlObjectNode &node)
-{
-    deselectModelNode(node.modelNode());
-}
-
-QList<QmlObjectNode> QmlModelView::selectedQmlObjectNodes() const
-{
-    return toQmlObjectNodeList(selectedModelNodes());
-}
-
-QList<QmlItemNode> QmlModelView::selectedQmlItemNodes() const
-{
-    return toQmlItemNodeList(selectedModelNodes());
-}
-
-void QmlModelView::setSelectedQmlItemNodes(const QList<QmlItemNode> &selectedNodeList)
-{
-    return setSelectedModelNodes(QmlDesigner::toModelNodeList(selectedNodeList));
-}
-
-QmlObjectNode QmlModelView::fxObjectNodeForId(const QString &id)
-{
-    return QmlObjectNode(modelNodeForId(id));
+    return QmlItemNode(rootModelNode());
 }
 
 NodeInstance QmlModelView::instanceForModelNode(const ModelNode &modelNode)