diff --git a/src/imports/models/plugin.cpp b/src/imports/models/plugin.cpp
index 2181562098816b1e57f717e6bb5ab56899807c5f..90e8a5639992d458a5f1e5600f6fd135f2d4d7fd 100644
--- a/src/imports/models/plugin.cpp
+++ b/src/imports/models/plugin.cpp
@@ -47,7 +47,7 @@ QT_BEGIN_NAMESPACE
 
 /*!
     \qmlmodule QtQml.Models 2
-    \title Qt QML Model QML Types
+    \title Qt QML Models QML Types
     \ingroup qmlmodules
     \brief Provides QML types for data models
     \since 5.1
@@ -60,7 +60,8 @@ QT_BEGIN_NAMESPACE
     import QtQml.Models 2.1
     \endcode
 
-    Note that QtQml.Models module started at version 2.1 to match the version of the parent module.
+    Note that QtQml.Models module started at version 2.1 to match the version
+    of the parent module, \l{Qt QML}.
 */
 
 
diff --git a/src/qml/doc/qtqml.qdocconf b/src/qml/doc/qtqml.qdocconf
index 84cf64edddd39c98f4f0d65e48eaa86fa748f10c..dde43888e204a4bbdf7d025a05f573eff4f8c223 100644
--- a/src/qml/doc/qtqml.qdocconf
+++ b/src/qml/doc/qtqml.qdocconf
@@ -32,9 +32,11 @@ tagfile                 = ../../../doc/qtqml/qtqml.tags
 
 depends += qtcore qtxmlpatterns qtgui qtquick qtdoc
 
-headerdirs  += ..
+headerdirs  += .. \
+               ../../imports/models
 
-sourcedirs  += ..
+sourcedirs  += .. \
+               ../../imports/models
 
 exampledirs += ../../../examples/qml \
                ../ \
diff --git a/src/qml/doc/src/qmltypereference.qdoc b/src/qml/doc/src/qmltypereference.qdoc
index f0aadbaf3254544491e27e0bc1d8614169d0f9f4..3def3209cc25c041424981882051050eacbeb370 100644
--- a/src/qml/doc/src/qmltypereference.qdoc
+++ b/src/qml/doc/src/qmltypereference.qdoc
@@ -58,8 +58,13 @@ follows:
 import QtQuick 2.0
 \endqml
 
-See the \l{Qt Quick} module documentation for more information about the
-\c QtQuick namespace and what it provides to QML application developers.
+See the \l{Qt Quick} module documentation for more information about the \c
+QtQuick namespace and what it provides to QML application developers.
+
+The QML types for creating lists and models, such as \l ListModel and \l
+ListElement, are moved to a submodule, \c QtQml.Models. The \l{Qt QML Models QML
+Types}{Qt QML Models} page has more information.
+
 
 The documentation for the types below applies equally to the types of the same
 name provided by the \l{Qt Quick} module, as they are in fact identical.
diff --git a/src/qml/doc/src/qtqml.qdoc b/src/qml/doc/src/qtqml.qdoc
index 2c6bc640ffe53b0af6771c0f7b0a148118b9aa8d..26e4867bbc1e8b813e7df0c838b140721e246bd8 100644
--- a/src/qml/doc/src/qtqml.qdoc
+++ b/src/qml/doc/src/qtqml.qdoc
@@ -84,6 +84,19 @@ various QML object types:
 \li \l Timer
 \endlist
 
+\section2 Lists and Models
+
+New in Qt 5.1, the model types are moved to a submodule, \c QtQml.Models. The
+\l{Qt QML Models QML Types}{Qt QML Models} page has more information.
+
+\list
+\li \l DelegateModel
+\li \l DelegateModelGroup
+\li \l ListElement
+\li \l ListModel
+\li \l ObjectModel
+\endlist
+
 \section1 JavaScript Environment for QML Applications
 
 JavaScript expressions allow QML code to contain application logic. Qt QML
diff --git a/src/qml/doc/src/whatsnew.qdoc b/src/qml/doc/src/whatsnew.qdoc
index 38713a19764e9e0905f67a49a87a5fc7d584699b..eece3bcaab0c70d999aad018c18f0b976128221b 100644
--- a/src/qml/doc/src/whatsnew.qdoc
+++ b/src/qml/doc/src/whatsnew.qdoc
@@ -39,13 +39,14 @@ a summary of the new changes:
 \li New properties for \l Qt.application: arguments, name, and version.
 \endlist
 
-\section2 New Submodules
+\section2 New Submodule
 
-The Qt QML Models is a new submodule in Qt 5.1 and provides several QML types
-for handling data with models and lists.
+The \l{Qt QML Models QML Types}{Qt QML Models} is a new submodule in Qt 5.1 and
+provides several QML types for handling data with models and lists. These types
+replace types such as \l VisualItem, \l VisualDataModel, and \l VisualDataGroup.
 
 \list
-\li \l{QtQml.Models}{Models}
+\li \l{Qt QML Models QML Types}{Models}
 \endlist
 
 The \l{What's New in Qt 5.1} has more information about the Qt 5.1 release.
diff --git a/src/qml/types/qqmldelegatemodel.cpp b/src/qml/types/qqmldelegatemodel.cpp
index 53b8a3c79d8da768cb84bb2e2322069880fd5648..279e2ea88479713d3483e52f8d19e2ee8a99adc2 100644
--- a/src/qml/types/qqmldelegatemodel.cpp
+++ b/src/qml/types/qqmldelegatemodel.cpp
@@ -121,15 +121,16 @@ QQmlDelegateModelParts::QQmlDelegateModelParts(QQmlDelegateModel *parent)
 /*!
     \qmltype VisualDataModel
     \instantiates QQmlDelegateModel
-    \inqmlmodule QtQml 2
+    \inqmlmodule QtQuick 2
     \ingroup qtquick-models
     \brief Encapsulates a model and delegate
 
     The VisualDataModel type encapsulates a model and the delegate that will
     be instantiated for items in a model.
 
-    This type is provided by \c {QtQuick 2} for compatibility reasons. The same implementation
-    is now primarily available as DelegateModel in the QtQml.Models module.
+    This type is provided by the \l{Qt QML} module due to compatibility reasons.
+    The same implementation is now primarily available as DelegateModel in the
+    \l{Qt QML Models QML Types}{Qt QML Models} module.
 
     \sa {QtQml.Models2::DelegateModel}
 */
@@ -142,12 +143,6 @@ QQmlDelegateModelParts::QQmlDelegateModelParts(QQmlDelegateModel *parent)
     The DelegateModel type encapsulates a model and the delegate that will
     be instantiated for items in the model.
 
-    This element is also available as DelegateModel in the \c QtQuick module. For full details,
-    see the \l DelegateModel documentation.
-
-    The DelegateModel type encapsulates a model and the delegate that will
-    be instantiated for items in the model.
-
     It is usually not necessary to create a DelegateModel.
     However, it can be useful for manipulating and accessing the \l modelIndex
     when a QAbstractItemModel subclass is used as the
@@ -158,6 +153,9 @@ QQmlDelegateModelParts::QQmlDelegateModelParts(QQmlDelegateModel *parent)
     The example below illustrates using a DelegateModel with a ListView.
 
     \snippet delegatemodel/visualdatamodel.qml 0
+
+    \note This type is also available as \l VisualDataModel in the \l{Qt QML}
+    module due to compatibility reasons.
 */
 
 QQmlDelegateModelPrivate::QQmlDelegateModelPrivate(QQmlContext *ctxt)
@@ -2168,15 +2166,32 @@ void QQmlDelegateModelGroupPrivate::destroyingPackage(QQuickPackage *package)
         it->destroyingPackage(package);
 }
 
+/*!
+    \qmltype VisualDataGroup
+    \instantiates QQmlDelegateModelGroup
+    \inqmlmodule QtQuick 2
+    \ingroup qtquick-models
+    \brief Encapsulates a filtered set of visual data items
+
+    The VisualDataGroup type provides a means to address the model data of a
+    model's delegate items, as well as sort and filter these delegate items.
+
+    This type is provided by the \l{Qt QML} module due to compatibility reasons.
+    The same implementation is now primarily available as \l DelegateModelGroup
+    in the \l{Qt QML Models QML Types}{Qt QML Models} module.
+
+    \sa {QtQml.Models2::DelegateModelGroup}
+*/
 /*!
     \qmltype DelegateModelGroup
     \instantiates QQmlDelegateModelGroup
-    \inqmlmodule QtQml 2
+    \inqmlmodule QtQml.Models 2
     \ingroup qtquick-models
     \brief Encapsulates a filtered set of visual data items
 
-    The DelegateModelGroup type provides a means to address the model data of a DelegateModel's
-    delegate items, as well as sort and filter these delegate items.
+    The DelegateModelGroup type provides a means to address the model data of a
+    DelegateModel's delegate items, as well as sort and filter these delegate
+    items.
 
     The initial set of instantiable delegate items in a DelegateModel is represented
     by its \l {QtQml.Models2::DelegateModel::items}{items} group, which normally directly reflects
@@ -2200,24 +2215,11 @@ void QQmlDelegateModelGroupPrivate::destroyingPackage(QQuickPackage *package)
     type or to cherry-pick specific items that should be instantiated irregardless of whether
     they're currently within a view's visible area.
 
-    \sa {QML Dynamic View Ordering Tutorial}
-*/
-/*!
-    \qmltype DelegateModelGroup
-    \instantiates QQmlDelegateModelGroup
-    \inqmlmodule QtQml.Models 2
-    \brief Encapsulates a filtered set of visual data items
-
-    The DelegateModelGroup type provides a means to address the model data of a DelegateModel's
-    delegate items, as well as sort and filter these delegate items.
-
-    This element is also available as DelegateModelGroup in the \c QtQuick module. For full details,
-    see the \l DelegateModelGroup documentation.
+    \note This type is also available as \l VisualDataGroup in the \l{Qt QML}
+    module due to compatibility reasons.
 
-    \sa {QtQuick::DelegateModelGroup}
+    \sa {QML Dynamic View Ordering Tutorial}
 */
-
-
 QQmlDelegateModelGroup::QQmlDelegateModelGroup(QObject *parent)
     : QObject(*new QQmlDelegateModelGroupPrivate, parent)
 {
diff --git a/src/qml/types/qqmllistmodel.cpp b/src/qml/types/qqmllistmodel.cpp
index 5ddc0f52bd2c595ecbb4e2f0e6b7569aeafc4e49..0cfd9c6ccb502446e28492b887caa96170a2ccb5 100644
--- a/src/qml/types/qqmllistmodel.cpp
+++ b/src/qml/types/qqmllistmodel.cpp
@@ -1426,24 +1426,12 @@ QQmlListModelParser::ListInstruction *QQmlListModelParser::ListModelData::instru
     \qmltype ListModel
     \instantiates QQmlListModel
     \inqmlmodule QtQml.Models 2
-    \brief Defines a free-form list data source
-
-    The ListModel is a simple container of ListElement definitions, each containing data roles.
-    The contents can be defined dynamically, or explicitly in QML.
-
-    This type is also available in the \c {QtQuick 2} import.
-
-    \sa {QtQml2::ListModel}{Full documentation for ListModel}
-*/
-/*!
-    \qmltype ListModel
-    \instantiates QQmlListModel
-    \inqmlmodule QtQml 2
-    \brief Defines a free-form list data source
     \ingroup qtquick-models
+    \brief Defines a free-form list data source
 
-    The ListModel is a simple container of ListElement definitions, each containing data roles.
-    The contents can be defined dynamically, or explicitly in QML.
+    The ListModel is a simple container of ListElement definitions, each
+    containing data roles. The contents can be defined dynamically, or
+    explicitly in QML.
 
     The number of elements in the model can be obtained from its \l count property.
     A number of familiar methods are also provided to manipulate the contents of the
@@ -1803,7 +1791,7 @@ QHash<int, QByteArray> QQmlListModel::roleNames() const
 }
 
 /*!
-    \qmlproperty bool QtQml2::ListModel::dynamicRoles
+    \qmlproperty bool ListModel::dynamicRoles
 
     By default, the type of a role is fixed the first time
     the role is used. For example, if you create a role called
@@ -1849,7 +1837,7 @@ void QQmlListModel::setDynamicRoles(bool enableDynamicRoles)
 }
 
 /*!
-    \qmlproperty int QtQml2::ListModel::count
+    \qmlproperty int ListModel::count
     The number of data entries in the model.
 */
 int QQmlListModel::count() const
@@ -2539,18 +2527,6 @@ bool QQmlListModelParser::definesEmptyList(const QString &s)
     \instantiates QQmlListElement
     \inqmlmodule QtQml.Models 2
     \brief Defines a data item in a ListModel
-
-    List elements are defined inside ListModel definitions, and represent items in a list.
-
-    This type is also available in the \c {QtQuick 2} import.
-
-    \sa {QtQml2::ListElement}{Full documentation for ListElement}
-*/
-/*!
-    \qmltype ListElement
-    \instantiates QQmlListElement
-    \inqmlmodule QtQml 2
-    \brief Defines a data item in a ListModel
     \ingroup qtquick-models
 
     List elements are defined inside ListModel definitions, and represent items in a
diff --git a/src/qml/types/qqmllistmodel_p_p.h b/src/qml/types/qqmllistmodel_p_p.h
index 0190081320a2e1a7b77a9076cf6a42dc18e1841a..44c349fbe6c2eb8242086b0631c022f708ec1c22 100644
--- a/src/qml/types/qqmllistmodel_p_p.h
+++ b/src/qml/types/qqmllistmodel_p_p.h
@@ -229,6 +229,9 @@ private:
     QStringHash<Role *> roleHash;
 };
 
+/*!
+\internal
+*/
 class ListElement
 {
 public:
@@ -292,6 +295,9 @@ private:
     friend class ListModel;
 };
 
+/*!
+\internal
+*/
 class ListModel
 {
 public:
@@ -375,4 +381,3 @@ QT_END_NAMESPACE
 Q_DECLARE_METATYPE(ListModel *);
 
 #endif // QQUICKLISTMODEL_P_P_H
-
diff --git a/src/qml/types/qqmlobjectmodel.cpp b/src/qml/types/qqmlobjectmodel.cpp
index 3e8a67a7d2dff3f99cdec6f37e5c541c8e8172db..f2a7477c1b17f2888b7b5dc0eb0f78eee229cff1 100644
--- a/src/qml/types/qqmlobjectmodel.cpp
+++ b/src/qml/types/qqmlobjectmodel.cpp
@@ -169,7 +169,7 @@ public:
 /*!
     \qmltype VisualItemModel
     \instantiates QQmlObjectModel
-    \inqmlmodule QtQml 2
+    \inqmlmodule QtQuick 2
     \brief Defines a set of objects to be used as a model
 
     The VisualItemModel type encapsulates contains the objects to be used
diff --git a/src/quick/doc/qtquick.qdocconf b/src/quick/doc/qtquick.qdocconf
index a27b0f82f73f449b7bd57c5199f8111d50e5ec59..f20890c37859089a6692ce93ecf5414255f26d29 100644
--- a/src/quick/doc/qtquick.qdocconf
+++ b/src/quick/doc/qtquick.qdocconf
@@ -60,4 +60,5 @@ headerdirs += ../../plugins
 sourcedirs += ../../plugins
 
 #exclude certain directories
-excludedirs = ../../imports/dialogs
+excludedirs += ../../imports/dialogs \
+               ../../imports/models
diff --git a/src/quick/doc/src/qmltypereference.qdoc b/src/quick/doc/src/qmltypereference.qdoc
index bb488ac2f22b9f33bf3ffc467153122f9019bae0..da8b3129ac3b896168da1d12f4e3365ce01fe53f 100644
--- a/src/quick/doc/src/qmltypereference.qdoc
+++ b/src/quick/doc/src/qmltypereference.qdoc
@@ -234,13 +234,26 @@ Animation paths
 
 \section2 Model/View Types And Data Storage And Access
 
-Models And Model Data
+QML Lists and Models
+
+The \l{Qt QML Models QML Types}{Qt QML Models} submodule provides the types for
+structuring data with models and lists.
+\list
+\li \l ListModel - Defines a list of data
+\li \l ListElement - Defines a data item in a \l ListModel
+\endlist
+
+These QML types are part of Qt Quick for backwards compatibility, but for
+newer applications, \l{Qt QML Models QML Types}{Qt QML Models} provides
+the same functionality.
 \list
-\li \l {QtQml2::ListModel}{ListModel} - Defines a list of data
-\li \l {QtQml2::ListElement}{ListElement} - Defines a data item in a \l {QtQml2::ListModel}{ListModel}
 \li \l {VisualItemModel} - Contains items that already defines its own visual delegate
 \li \l {VisualDataModel} - Encapsulates a model and a delegate
 \li \l {VisualDataGroup} - Encapsulates a filtered set of visual data items
+\endlist
+
+XML Lists
+\list
 \li \l {XmlListModel} - Specifies a model using XPath expressions
 \li \l {XmlRole} - Specifies a role for an \l {XmlListModel}
 \endlist
diff --git a/src/quick/doc/src/whatsnew.qdoc b/src/quick/doc/src/whatsnew.qdoc
index 2b865073d36befce0ec28a122aa4a82cc7aaf834..973d41dca2df1b1dd5e1552a088101e7d6ea40ff 100644
--- a/src/quick/doc/src/whatsnew.qdoc
+++ b/src/quick/doc/src/whatsnew.qdoc
@@ -44,6 +44,15 @@ features introduced by the new import and new classes in Qt 5.1:
 \li New \l TextEdit properties: selectByKeyboard and textDocument
 \li A \l Window declared inside another Window or \l Item will automatically be
     transient for (centered upon) the outer window.
+\li These types are now part of \l{Qt QML}:
+    \list
+    \li \l {VisualItemModel}
+    \li \l {VisualDataModel} - Encapsulates a model and a delegate
+    \li \l {VisualDataGroup}
+    \endlist
+    These types are kept due to compatibility reasons and are replaced by the
+    \l{Qt QML Models QML Types}{Qt QML Models} types.
+    \endlist
 \endlist
 
 \section2 New Submodules