diff --git a/src/private/AbstractCheckable.qml b/src/controls/Private/AbstractCheckable.qml
similarity index 100%
rename from src/private/AbstractCheckable.qml
rename to src/controls/Private/AbstractCheckable.qml
diff --git a/src/private/BasicButton.qml b/src/controls/Private/BasicButton.qml
similarity index 100%
rename from src/private/BasicButton.qml
rename to src/controls/Private/BasicButton.qml
diff --git a/src/private/Control.qml b/src/controls/Private/Control.qml
similarity index 100%
rename from src/private/Control.qml
rename to src/controls/Private/Control.qml
diff --git a/src/private/FocusFrame.qml b/src/controls/Private/FocusFrame.qml
similarity index 100%
rename from src/private/FocusFrame.qml
rename to src/controls/Private/FocusFrame.qml
diff --git a/src/private/ModalPopupBehavior.qml b/src/controls/Private/ModalPopupBehavior.qml
similarity index 100%
rename from src/private/ModalPopupBehavior.qml
rename to src/controls/Private/ModalPopupBehavior.qml
diff --git a/src/private/ScrollBar.qml b/src/controls/Private/ScrollBar.qml
similarity index 100%
rename from src/private/ScrollBar.qml
rename to src/controls/Private/ScrollBar.qml
diff --git a/src/private/ScrollViewHelper.qml b/src/controls/Private/ScrollViewHelper.qml
similarity index 100%
rename from src/private/ScrollViewHelper.qml
rename to src/controls/Private/ScrollViewHelper.qml
diff --git a/src/private/StackView.js b/src/controls/Private/StackView.js
similarity index 100%
rename from src/private/StackView.js
rename to src/controls/Private/StackView.js
diff --git a/src/private/StackViewSlideDelegate.qml b/src/controls/Private/StackViewSlideDelegate.qml
similarity index 100%
rename from src/private/StackViewSlideDelegate.qml
rename to src/controls/Private/StackViewSlideDelegate.qml
diff --git a/src/private/Style.qml b/src/controls/Private/Style.qml
similarity index 100%
rename from src/private/Style.qml
rename to src/controls/Private/Style.qml
diff --git a/src/private/TabBar.qml b/src/controls/Private/TabBar.qml
similarity index 100%
rename from src/private/TabBar.qml
rename to src/controls/Private/TabBar.qml
diff --git a/src/private/private.pri b/src/controls/Private/private.pri
similarity index 60%
rename from src/private/private.pri
rename to src/controls/Private/private.pri
index 94d313c31c0d7741691b45a5e59b29e4394f0784..bd001c0abf4a834d45141727e4134216ffd5d5b0 100644
--- a/src/private/private.pri
+++ b/src/controls/Private/private.pri
@@ -22,3 +22,21 @@ qtHaveModule(widgets) {
     HEADERS += $$PWD/qquickstyleitem_p.h
     SOURCES += $$PWD/qquickstyleitem.cpp
 }
+
+# private qml files
+PRIVATE_QML_FILES += \
+    $$PWD/AbstractCheckable.qml \
+    $$PWD/TabBar.qml \
+    $$PWD/BasicButton.qml \
+    $$PWD/Control.qml \
+    $$PWD/Style.qml \
+    $$PWD/style.js \
+    $$PWD/ModalPopupBehavior.qml \
+    $$PWD/StackViewSlideDelegate.qml \
+    $$PWD/StackView.js \
+    $$PWD/ScrollViewHelper.qml \
+    $$PWD/ScrollBar.qml \
+    $$PWD/FocusFrame.qml \
+    $$PWD/qmldir
+
+QML_FILES += $$PRIVATE_QML_FILES
diff --git a/src/private/qmldir b/src/controls/Private/qmldir
similarity index 94%
rename from src/private/qmldir
rename to src/controls/Private/qmldir
index 817e88a0f99c06825a948d4fee02abcefe4b3c76..1ee66461bbdf9b94bca2ba77936b4d5ed1d81b33 100644
--- a/src/private/qmldir
+++ b/src/controls/Private/qmldir
@@ -1,5 +1,4 @@
 module QtQuick.Controls.Private
-plugin qtquickcontrolsprivateplugin
 AbstractCheckable 1.0 AbstractCheckable.qml
 Control 1.0 Control.qml
 FocusFrame 1.0 FocusFrame.qml
diff --git a/src/private/qquickabstractstyle.cpp b/src/controls/Private/qquickabstractstyle.cpp
similarity index 100%
rename from src/private/qquickabstractstyle.cpp
rename to src/controls/Private/qquickabstractstyle.cpp
diff --git a/src/private/qquickabstractstyle_p.h b/src/controls/Private/qquickabstractstyle_p.h
similarity index 100%
rename from src/private/qquickabstractstyle_p.h
rename to src/controls/Private/qquickabstractstyle_p.h
diff --git a/src/private/qquickcontrolsettings.cpp b/src/controls/Private/qquickcontrolsettings.cpp
similarity index 100%
rename from src/private/qquickcontrolsettings.cpp
rename to src/controls/Private/qquickcontrolsettings.cpp
diff --git a/src/private/qquickcontrolsettings_p.h b/src/controls/Private/qquickcontrolsettings_p.h
similarity index 100%
rename from src/private/qquickcontrolsettings_p.h
rename to src/controls/Private/qquickcontrolsettings_p.h
diff --git a/src/private/qquickcontrolsprivate_p.h b/src/controls/Private/qquickcontrolsprivate_p.h
similarity index 100%
rename from src/private/qquickcontrolsprivate_p.h
rename to src/controls/Private/qquickcontrolsprivate_p.h
diff --git a/src/private/qquickpadding_p.h b/src/controls/Private/qquickpadding_p.h
similarity index 100%
rename from src/private/qquickpadding_p.h
rename to src/controls/Private/qquickpadding_p.h
diff --git a/src/private/qquickrangemodel.cpp b/src/controls/Private/qquickrangemodel.cpp
similarity index 100%
rename from src/private/qquickrangemodel.cpp
rename to src/controls/Private/qquickrangemodel.cpp
diff --git a/src/private/qquickrangemodel_p.h b/src/controls/Private/qquickrangemodel_p.h
similarity index 100%
rename from src/private/qquickrangemodel_p.h
rename to src/controls/Private/qquickrangemodel_p.h
diff --git a/src/private/qquickrangemodel_p_p.h b/src/controls/Private/qquickrangemodel_p_p.h
similarity index 100%
rename from src/private/qquickrangemodel_p_p.h
rename to src/controls/Private/qquickrangemodel_p_p.h
diff --git a/src/private/qquickspinboxvalidator.cpp b/src/controls/Private/qquickspinboxvalidator.cpp
similarity index 100%
rename from src/private/qquickspinboxvalidator.cpp
rename to src/controls/Private/qquickspinboxvalidator.cpp
diff --git a/src/private/qquickspinboxvalidator_p.h b/src/controls/Private/qquickspinboxvalidator_p.h
similarity index 100%
rename from src/private/qquickspinboxvalidator_p.h
rename to src/controls/Private/qquickspinboxvalidator_p.h
diff --git a/src/private/qquickstyleitem.cpp b/src/controls/Private/qquickstyleitem.cpp
similarity index 100%
rename from src/private/qquickstyleitem.cpp
rename to src/controls/Private/qquickstyleitem.cpp
diff --git a/src/private/qquickstyleitem_p.h b/src/controls/Private/qquickstyleitem_p.h
similarity index 100%
rename from src/private/qquickstyleitem_p.h
rename to src/controls/Private/qquickstyleitem_p.h
diff --git a/src/private/qquicktooltip.cpp b/src/controls/Private/qquicktooltip.cpp
similarity index 100%
rename from src/private/qquicktooltip.cpp
rename to src/controls/Private/qquicktooltip.cpp
diff --git a/src/private/qquicktooltip_p.h b/src/controls/Private/qquicktooltip_p.h
similarity index 100%
rename from src/private/qquicktooltip_p.h
rename to src/controls/Private/qquicktooltip_p.h
diff --git a/src/private/qquickwheelarea.cpp b/src/controls/Private/qquickwheelarea.cpp
similarity index 100%
rename from src/private/qquickwheelarea.cpp
rename to src/controls/Private/qquickwheelarea.cpp
diff --git a/src/private/qquickwheelarea_p.h b/src/controls/Private/qquickwheelarea_p.h
similarity index 100%
rename from src/private/qquickwheelarea_p.h
rename to src/controls/Private/qquickwheelarea_p.h
diff --git a/src/private/style.js b/src/controls/Private/style.js
similarity index 100%
rename from src/private/style.js
rename to src/controls/Private/style.js
diff --git a/src/styles/Base/ButtonStyle.qml b/src/controls/Styles/Base/ButtonStyle.qml
similarity index 100%
rename from src/styles/Base/ButtonStyle.qml
rename to src/controls/Styles/Base/ButtonStyle.qml
diff --git a/src/styles/Base/CheckBoxStyle.qml b/src/controls/Styles/Base/CheckBoxStyle.qml
similarity index 100%
rename from src/styles/Base/CheckBoxStyle.qml
rename to src/controls/Styles/Base/CheckBoxStyle.qml
diff --git a/src/styles/Base/ComboBoxStyle.qml b/src/controls/Styles/Base/ComboBoxStyle.qml
similarity index 100%
rename from src/styles/Base/ComboBoxStyle.qml
rename to src/controls/Styles/Base/ComboBoxStyle.qml
diff --git a/src/styles/Base/FocusFrameStyle.qml b/src/controls/Styles/Base/FocusFrameStyle.qml
similarity index 100%
rename from src/styles/Base/FocusFrameStyle.qml
rename to src/controls/Styles/Base/FocusFrameStyle.qml
diff --git a/src/styles/Base/GroupBoxStyle.qml b/src/controls/Styles/Base/GroupBoxStyle.qml
similarity index 100%
rename from src/styles/Base/GroupBoxStyle.qml
rename to src/controls/Styles/Base/GroupBoxStyle.qml
diff --git a/src/styles/Base/MenuBarStyle.qml b/src/controls/Styles/Base/MenuBarStyle.qml
similarity index 100%
rename from src/styles/Base/MenuBarStyle.qml
rename to src/controls/Styles/Base/MenuBarStyle.qml
diff --git a/src/styles/Base/MenuStyle.qml b/src/controls/Styles/Base/MenuStyle.qml
similarity index 100%
rename from src/styles/Base/MenuStyle.qml
rename to src/controls/Styles/Base/MenuStyle.qml
diff --git a/src/styles/Base/ProgressBarStyle.qml b/src/controls/Styles/Base/ProgressBarStyle.qml
similarity index 100%
rename from src/styles/Base/ProgressBarStyle.qml
rename to src/controls/Styles/Base/ProgressBarStyle.qml
diff --git a/src/styles/Base/RadioButtonStyle.qml b/src/controls/Styles/Base/RadioButtonStyle.qml
similarity index 100%
rename from src/styles/Base/RadioButtonStyle.qml
rename to src/controls/Styles/Base/RadioButtonStyle.qml
diff --git a/src/styles/Base/ScrollViewStyle.qml b/src/controls/Styles/Base/ScrollViewStyle.qml
similarity index 100%
rename from src/styles/Base/ScrollViewStyle.qml
rename to src/controls/Styles/Base/ScrollViewStyle.qml
diff --git a/src/styles/Base/SliderStyle.qml b/src/controls/Styles/Base/SliderStyle.qml
similarity index 100%
rename from src/styles/Base/SliderStyle.qml
rename to src/controls/Styles/Base/SliderStyle.qml
diff --git a/src/styles/Base/SpinBoxStyle.qml b/src/controls/Styles/Base/SpinBoxStyle.qml
similarity index 100%
rename from src/styles/Base/SpinBoxStyle.qml
rename to src/controls/Styles/Base/SpinBoxStyle.qml
diff --git a/src/styles/Base/StatusBarStyle.qml b/src/controls/Styles/Base/StatusBarStyle.qml
similarity index 100%
rename from src/styles/Base/StatusBarStyle.qml
rename to src/controls/Styles/Base/StatusBarStyle.qml
diff --git a/src/styles/Base/TabViewStyle.qml b/src/controls/Styles/Base/TabViewStyle.qml
similarity index 100%
rename from src/styles/Base/TabViewStyle.qml
rename to src/controls/Styles/Base/TabViewStyle.qml
diff --git a/src/styles/Base/TableViewStyle.qml b/src/controls/Styles/Base/TableViewStyle.qml
similarity index 100%
rename from src/styles/Base/TableViewStyle.qml
rename to src/controls/Styles/Base/TableViewStyle.qml
diff --git a/src/styles/Base/TextFieldStyle.qml b/src/controls/Styles/Base/TextFieldStyle.qml
similarity index 100%
rename from src/styles/Base/TextFieldStyle.qml
rename to src/controls/Styles/Base/TextFieldStyle.qml
diff --git a/src/styles/Base/ToolBarStyle.qml b/src/controls/Styles/Base/ToolBarStyle.qml
similarity index 100%
rename from src/styles/Base/ToolBarStyle.qml
rename to src/controls/Styles/Base/ToolBarStyle.qml
diff --git a/src/styles/Base/ToolButtonStyle.qml b/src/controls/Styles/Base/ToolButtonStyle.qml
similarity index 100%
rename from src/styles/Base/ToolButtonStyle.qml
rename to src/controls/Styles/Base/ToolButtonStyle.qml
diff --git a/src/styles/Base/images/arrow-down.png b/src/controls/Styles/Base/images/arrow-down.png
similarity index 100%
rename from src/styles/Base/images/arrow-down.png
rename to src/controls/Styles/Base/images/arrow-down.png
diff --git a/src/styles/Base/images/arrow-down@2x.png b/src/controls/Styles/Base/images/arrow-down@2x.png
similarity index 100%
rename from src/styles/Base/images/arrow-down@2x.png
rename to src/controls/Styles/Base/images/arrow-down@2x.png
diff --git a/src/styles/Base/images/arrow-left.png b/src/controls/Styles/Base/images/arrow-left.png
similarity index 100%
rename from src/styles/Base/images/arrow-left.png
rename to src/controls/Styles/Base/images/arrow-left.png
diff --git a/src/styles/Base/images/arrow-left@2x.png b/src/controls/Styles/Base/images/arrow-left@2x.png
similarity index 100%
rename from src/styles/Base/images/arrow-left@2x.png
rename to src/controls/Styles/Base/images/arrow-left@2x.png
diff --git a/src/styles/Base/images/arrow-right.png b/src/controls/Styles/Base/images/arrow-right.png
similarity index 100%
rename from src/styles/Base/images/arrow-right.png
rename to src/controls/Styles/Base/images/arrow-right.png
diff --git a/src/styles/Base/images/arrow-right@2x.png b/src/controls/Styles/Base/images/arrow-right@2x.png
similarity index 100%
rename from src/styles/Base/images/arrow-right@2x.png
rename to src/controls/Styles/Base/images/arrow-right@2x.png
diff --git a/src/styles/Base/images/arrow-up.png b/src/controls/Styles/Base/images/arrow-up.png
similarity index 100%
rename from src/styles/Base/images/arrow-up.png
rename to src/controls/Styles/Base/images/arrow-up.png
diff --git a/src/styles/Base/images/arrow-up@2x.png b/src/controls/Styles/Base/images/arrow-up@2x.png
similarity index 100%
rename from src/styles/Base/images/arrow-up@2x.png
rename to src/controls/Styles/Base/images/arrow-up@2x.png
diff --git a/src/styles/Base/images/button.png b/src/controls/Styles/Base/images/button.png
similarity index 100%
rename from src/styles/Base/images/button.png
rename to src/controls/Styles/Base/images/button.png
diff --git a/src/styles/Base/images/button_down.png b/src/controls/Styles/Base/images/button_down.png
similarity index 100%
rename from src/styles/Base/images/button_down.png
rename to src/controls/Styles/Base/images/button_down.png
diff --git a/src/styles/Base/images/editbox.png b/src/controls/Styles/Base/images/editbox.png
similarity index 100%
rename from src/styles/Base/images/editbox.png
rename to src/controls/Styles/Base/images/editbox.png
diff --git a/src/styles/Base/images/focusframe.png b/src/controls/Styles/Base/images/focusframe.png
similarity index 100%
rename from src/styles/Base/images/focusframe.png
rename to src/controls/Styles/Base/images/focusframe.png
diff --git a/src/styles/Base/images/groupbox.png b/src/controls/Styles/Base/images/groupbox.png
similarity index 100%
rename from src/styles/Base/images/groupbox.png
rename to src/controls/Styles/Base/images/groupbox.png
diff --git a/src/styles/Base/images/header.png b/src/controls/Styles/Base/images/header.png
similarity index 100%
rename from src/styles/Base/images/header.png
rename to src/controls/Styles/Base/images/header.png
diff --git a/src/styles/Base/images/progress-indeterminate.png b/src/controls/Styles/Base/images/progress-indeterminate.png
similarity index 100%
rename from src/styles/Base/images/progress-indeterminate.png
rename to src/controls/Styles/Base/images/progress-indeterminate.png
diff --git a/src/styles/Base/images/scrollbar-handle-horizontal.png b/src/controls/Styles/Base/images/scrollbar-handle-horizontal.png
similarity index 100%
rename from src/styles/Base/images/scrollbar-handle-horizontal.png
rename to src/controls/Styles/Base/images/scrollbar-handle-horizontal.png
diff --git a/src/styles/Base/images/scrollbar-handle-vertical.png b/src/controls/Styles/Base/images/scrollbar-handle-vertical.png
similarity index 100%
rename from src/styles/Base/images/scrollbar-handle-vertical.png
rename to src/controls/Styles/Base/images/scrollbar-handle-vertical.png
diff --git a/src/styles/Base/images/tab.png b/src/controls/Styles/Base/images/tab.png
similarity index 100%
rename from src/styles/Base/images/tab.png
rename to src/controls/Styles/Base/images/tab.png
diff --git a/src/styles/Base/images/tab_selected.png b/src/controls/Styles/Base/images/tab_selected.png
similarity index 100%
rename from src/styles/Base/images/tab_selected.png
rename to src/controls/Styles/Base/images/tab_selected.png
diff --git a/src/styles/Desktop/ButtonStyle.qml b/src/controls/Styles/Desktop/ButtonStyle.qml
similarity index 100%
rename from src/styles/Desktop/ButtonStyle.qml
rename to src/controls/Styles/Desktop/ButtonStyle.qml
diff --git a/src/styles/Desktop/CheckBoxStyle.qml b/src/controls/Styles/Desktop/CheckBoxStyle.qml
similarity index 100%
rename from src/styles/Desktop/CheckBoxStyle.qml
rename to src/controls/Styles/Desktop/CheckBoxStyle.qml
diff --git a/src/styles/Desktop/ComboBoxStyle.qml b/src/controls/Styles/Desktop/ComboBoxStyle.qml
similarity index 100%
rename from src/styles/Desktop/ComboBoxStyle.qml
rename to src/controls/Styles/Desktop/ComboBoxStyle.qml
diff --git a/src/styles/Desktop/FocusFrameStyle.qml b/src/controls/Styles/Desktop/FocusFrameStyle.qml
similarity index 100%
rename from src/styles/Desktop/FocusFrameStyle.qml
rename to src/controls/Styles/Desktop/FocusFrameStyle.qml
diff --git a/src/styles/Desktop/GroupBoxStyle.qml b/src/controls/Styles/Desktop/GroupBoxStyle.qml
similarity index 100%
rename from src/styles/Desktop/GroupBoxStyle.qml
rename to src/controls/Styles/Desktop/GroupBoxStyle.qml
diff --git a/src/styles/Desktop/MenuBarStyle.qml b/src/controls/Styles/Desktop/MenuBarStyle.qml
similarity index 100%
rename from src/styles/Desktop/MenuBarStyle.qml
rename to src/controls/Styles/Desktop/MenuBarStyle.qml
diff --git a/src/styles/Desktop/MenuStyle.qml b/src/controls/Styles/Desktop/MenuStyle.qml
similarity index 100%
rename from src/styles/Desktop/MenuStyle.qml
rename to src/controls/Styles/Desktop/MenuStyle.qml
diff --git a/src/styles/Desktop/ProgressBarStyle.qml b/src/controls/Styles/Desktop/ProgressBarStyle.qml
similarity index 100%
rename from src/styles/Desktop/ProgressBarStyle.qml
rename to src/controls/Styles/Desktop/ProgressBarStyle.qml
diff --git a/src/styles/Desktop/RadioButtonStyle.qml b/src/controls/Styles/Desktop/RadioButtonStyle.qml
similarity index 100%
rename from src/styles/Desktop/RadioButtonStyle.qml
rename to src/controls/Styles/Desktop/RadioButtonStyle.qml
diff --git a/src/styles/Desktop/ScrollViewStyle.qml b/src/controls/Styles/Desktop/ScrollViewStyle.qml
similarity index 100%
rename from src/styles/Desktop/ScrollViewStyle.qml
rename to src/controls/Styles/Desktop/ScrollViewStyle.qml
diff --git a/src/styles/Desktop/SliderStyle.qml b/src/controls/Styles/Desktop/SliderStyle.qml
similarity index 100%
rename from src/styles/Desktop/SliderStyle.qml
rename to src/controls/Styles/Desktop/SliderStyle.qml
diff --git a/src/styles/Desktop/SpinBoxStyle.qml b/src/controls/Styles/Desktop/SpinBoxStyle.qml
similarity index 100%
rename from src/styles/Desktop/SpinBoxStyle.qml
rename to src/controls/Styles/Desktop/SpinBoxStyle.qml
diff --git a/src/styles/Desktop/StatusBarStyle.qml b/src/controls/Styles/Desktop/StatusBarStyle.qml
similarity index 100%
rename from src/styles/Desktop/StatusBarStyle.qml
rename to src/controls/Styles/Desktop/StatusBarStyle.qml
diff --git a/src/styles/Desktop/TabViewStyle.qml b/src/controls/Styles/Desktop/TabViewStyle.qml
similarity index 100%
rename from src/styles/Desktop/TabViewStyle.qml
rename to src/controls/Styles/Desktop/TabViewStyle.qml
diff --git a/src/styles/Desktop/TableViewStyle.qml b/src/controls/Styles/Desktop/TableViewStyle.qml
similarity index 100%
rename from src/styles/Desktop/TableViewStyle.qml
rename to src/controls/Styles/Desktop/TableViewStyle.qml
diff --git a/src/styles/Desktop/TextFieldStyle.qml b/src/controls/Styles/Desktop/TextFieldStyle.qml
similarity index 100%
rename from src/styles/Desktop/TextFieldStyle.qml
rename to src/controls/Styles/Desktop/TextFieldStyle.qml
diff --git a/src/styles/Desktop/ToolBarStyle.qml b/src/controls/Styles/Desktop/ToolBarStyle.qml
similarity index 100%
rename from src/styles/Desktop/ToolBarStyle.qml
rename to src/controls/Styles/Desktop/ToolBarStyle.qml
diff --git a/src/styles/Desktop/ToolButtonStyle.qml b/src/controls/Styles/Desktop/ToolButtonStyle.qml
similarity index 100%
rename from src/styles/Desktop/ToolButtonStyle.qml
rename to src/controls/Styles/Desktop/ToolButtonStyle.qml
diff --git a/src/styles/qmldir b/src/controls/Styles/qmldir
similarity index 100%
rename from src/styles/qmldir
rename to src/controls/Styles/qmldir
diff --git a/src/controls/Styles/styles.pri b/src/controls/Styles/styles.pri
new file mode 100644
index 0000000000000000000000000000000000000000..10eb3e9b45ba5afac41e24f8d90835cd200f7c31
--- /dev/null
+++ b/src/controls/Styles/styles.pri
@@ -0,0 +1,69 @@
+
+# Base
+STYLES_QML_FILES = \
+    $$PWD/Base/ButtonStyle.qml \
+    $$PWD/Base/CheckBoxStyle.qml \
+    $$PWD/Base/ComboBoxStyle.qml \
+    $$PWD/Base/FocusFrameStyle.qml \
+    $$PWD/Base/GroupBoxStyle.qml \
+    $$PWD/Base/MenuBarStyle.qml \
+    $$PWD/Base/MenuStyle.qml \
+    $$PWD/Base/ProgressBarStyle.qml \
+    $$PWD/Base/RadioButtonStyle.qml \
+    $$PWD/Base/ScrollViewStyle.qml\
+    $$PWD/Base/SliderStyle.qml \
+    $$PWD/Base/SpinBoxStyle.qml \
+    $$PWD/Base/StatusBarStyle.qml \
+    $$PWD/Base/TableViewStyle.qml \
+    $$PWD/Base/TabViewStyle.qml \
+    $$PWD/Base/TextFieldStyle.qml \
+    $$PWD/Base/ToolBarStyle.qml \
+    $$PWD/Base/ToolButtonStyle.qml
+
+# Desktop
+STYLES_QML_FILES += \
+    $$PWD/Desktop/ButtonStyle.qml \
+    $$PWD/Desktop/CheckBoxStyle.qml \
+    $$PWD/Desktop/ComboBoxStyle.qml \
+    $$PWD/Desktop/FocusFrameStyle.qml \
+    $$PWD/Desktop/GroupBoxStyle.qml \
+    $$PWD/Desktop/MenuBarStyle.qml \
+    $$PWD/Desktop/MenuStyle.qml \
+    $$PWD/Desktop/ProgressBarStyle.qml \
+    $$PWD/Desktop/RadioButtonStyle.qml \
+    $$PWD/Desktop/ScrollViewStyle.qml \
+    $$PWD/Desktop/SliderStyle.qml \
+    $$PWD/Desktop/SpinBoxStyle.qml \
+    $$PWD/Desktop/StatusBarStyle.qml\
+    $$PWD/Desktop/TabViewStyle.qml \
+    $$PWD/Desktop/TableViewStyle.qml \
+    $$PWD/Desktop/TextFieldStyle.qml \
+    $$PWD/Desktop/ToolBarStyle.qml \
+    $$PWD/Desktop/ToolButtonStyle.qml
+
+# Images
+STYLES_QML_FILES += \
+    $$PWD/Base/images/button.png \
+    $$PWD/Base/images/button_down.png \
+    $$PWD/Base/images/tab.png \
+    $$PWD/Base/images/header.png \
+    $$PWD/Base/images/groupbox.png \
+    $$PWD/Base/images/focusframe.png \
+    $$PWD/Base/images/tab_selected.png \
+    $$PWD/Base/images/scrollbar-handle-horizontal.png \
+    $$PWD/Base/images/scrollbar-handle-vertical.png \
+    $$PWD/Base/images/progress-indeterminate.png \
+    $$PWD/Base/images/editbox.png \
+    $$PWD/Base/images/arrow-up.png \
+    $$PWD/Base/images/arrow-up@2x.png \
+    $$PWD/Base/images/arrow-down.png \
+    $$PWD/Base/images/arrow-down@2x.png \
+    $$PWD/Base/images/arrow-left.png \
+    $$PWD/Base/images/arrow-left@2x.png \
+    $$PWD/Base/images/arrow-right.png \
+    $$PWD/Base/images/arrow-right@2x.png
+
+STYLES_QML_FILES += $$PWD/qmldir
+
+QML_FILES += $$STYLES_QML_FILES
+
diff --git a/src/controls/controls.pro b/src/controls/controls.pro
index ba97663f269ead9c1ab4b72c4de7c93c961f3b89..0a9d42c00586e499ea2b1c0084278eddda18335f 100644
--- a/src/controls/controls.pro
+++ b/src/controls/controls.pro
@@ -5,7 +5,7 @@ QT += qml quick gui-private core-private
 
 QMAKE_DOCS = $$PWD/doc/qtquickcontrols.qdocconf
 
-QML_FILES = \
+CONTROLS_QML_FILES = \
     ApplicationWindow.qml \
     Button.qml \
     CheckBox.qml \
@@ -33,9 +33,16 @@ QML_FILES = \
     ToolBar.qml \
     ToolButton.qml
 
+QML_FILES += $$CONTROLS_QML_FILES
+
 SOURCES += $$PWD/plugin.cpp
+HEADERS += $$PWD/plugin.h
 
 include(plugin.pri)
+include(Private/private.pri)
+include(Styles/styles.pri)
+
+osx: LIBS += -framework Carbon
 
 CONFIG += no_cxx_module
 load(qml_plugin)
diff --git a/src/controls/doc/qtquickcontrols.qdocconf b/src/controls/doc/qtquickcontrols.qdocconf
index fe7770aa362ff24d6629b181f967a672949bf838..3a56624843e64341e1a66b1c4e8f17a9adb4cebd 100644
--- a/src/controls/doc/qtquickcontrols.qdocconf
+++ b/src/controls/doc/qtquickcontrols.qdocconf
@@ -18,30 +18,41 @@ qhp.QtQuickControls.filterAttributes    = qtquickcontrols $QT_VERSION qtrefdoc
 qhp.QtQuickControls.customFilters.Qt.name = QtQuickControls $QT_VERSION
 qhp.QtQuickControls.customFilters.Qt.filterAttributes = qtquickcontrols $QT_VERSION
 
-qhp.QtQuickControls.subprojects = qtquickcontrolsqmltypes
-qhp.QtQuickControls.subprojects.qtquickcontrolsqmltypes.title = QML Types
+qhp.QtQuickControls.subprojects = qtquickcontrolsqmltypes qtquickcontrolsstyles
+
+qhp.QtQuickControls.subprojects.qtquickcontrolsqmltypes.title      = Controls QML Types
 qhp.QtQuickControls.subprojects.qtquickcontrolsqmltypes.indexTitle = Qt Quick Controls QML Types
-qhp.QtQuickControls.subprojects.qtquickcontrolsqmltypes.selectors = class fake:qmlclass
-qhp.QtQuickControls.subprojects.qtquickcontrolsqmltypes.sortPages = true
+qhp.QtQuickControls.subprojects.qtquickcontrolsqmltypes.selectors  = fake:qmlclass # cannot choose qmltypes from a specific group QTBUG-32985
+qhp.QtQuickControls.subprojects.qtquickcontrolsqmltypes.sortPages  = true
+
+qhp.QtQuickControls.subprojects.qtquickcontrolsstyles.title      = Qt Quick Controls Styles Structure
+qhp.QtQuickControls.subprojects.qtquickcontrolsstyles.indexTitle = Qt Quick Controls Styles Structure
+qhp.QtQuickControls.subprojects.qtquickcontrolsstyles.type       = manual
 
-depends = qtqml qtquick qtwidgets qtdoc qtquicklayouts qtquickcontrolsstyles
+depends = qtqml qtquick qtwidgets qtdoc qtquicklayouts
 
 exampledirs += ../../../examples/quick
 
 # Specify the install path under QT_INSTALL_EXAMPLES
 examplesinstallpath = quick/controls
 
-headerdirs += ../
-
-sourcedirs += ../
-
-sources += ../../private/AbstractCheckable.qml \
-           ../../private/BasicButton.qml \
-           ../../private/FocusFrame.qml \
-           ../../private/ModalPopupBehavior.qml \
-           ../../private/ScrollBar.qml \
-           ../../private/TabBar.qml \
-           ../../private/Control.qml \
+headerdirs += ../ \
+              Styles/Base
+
+sourcedirs += ../ \
+              Styles/Base
+
+sources += ../Private/AbstractCheckable.qml \
+           ../Private/BasicButton.qml \
+           ../Private/FocusFrame.qml \
+           ../Private/ModalPopupBehavior.qml \
+           ../Private/ScrollBar.qml \
+           ../Private/TabBar.qml \
+           ../Private/Control.qml \
+           ../Private/qquickstyleitem.cpp \
+           ../Private/Style.qml \
+           ../Private/qquickabstractstyle.h \
+           ../Private/qquickabstractstyle.cpp
 
 imagedirs += images
 
diff --git a/src/controls/doc/src/qtquickcontrols.qdoc b/src/controls/doc/src/qtquickcontrols.qdoc
index 731380866a941fcf21e7129b5b3e95f26b82cef5..746d7873f3815c2f366b94b7776ba252feb32966 100644
--- a/src/controls/doc/src/qtquickcontrols.qdoc
+++ b/src/controls/doc/src/qtquickcontrols.qdoc
@@ -35,6 +35,8 @@
     interfaces. These QML types work in conjunction with \l{Qt Quick} and
     \l{Qt Quick Layouts}.
 
+    Controls can be styled using the \l{Qt Quick Controls Styles QML Types}{Styles QML Types}.
+
     The QML types can be imported into your application using the
     following import statement in your .qml file.
 
diff --git a/src/styles/doc/src/qtquickcontrolsstyles-index.qdoc b/src/controls/doc/src/qtquickcontrolsstyles-index.qdoc
similarity index 89%
rename from src/styles/doc/src/qtquickcontrolsstyles-index.qdoc
rename to src/controls/doc/src/qtquickcontrolsstyles-index.qdoc
index ed4a00825be2f70160c3959f40976c0b3f72b956..e035ddba98b972785c136fe17eb847fdb26a8cd0 100644
--- a/src/styles/doc/src/qtquickcontrolsstyles-index.qdoc
+++ b/src/controls/doc/src/qtquickcontrolsstyles-index.qdoc
@@ -83,6 +83,17 @@
 
 */
 
+/*!
+    \page qtquickcontrolsstyles-structure.html
+    \title Qt Quick Controls Styles Structure
+     \list
+      \li \l{Qt Quick Controls Styles}
+          \list
+          \li \l{Qt Quick Controls Styles QML Types}{Styles QMl Types}
+          \endlist
+     \endlist
+*/
+
 /*!
     \qmlmodule QtQuick.Controls.Styles 1
     \title Qt Quick Controls Styles QML Types
@@ -96,4 +107,7 @@
     A styling object is usually a collection of properties that control behavior and simple delegates
     that can be replaced with custom QML snippets.
 
+    \code
+    import QtQuick.Controls.Styles 1.0
+    \endcode
 */
diff --git a/src/controls/plugin.cpp b/src/controls/plugin.cpp
index 6b67c1b21edefff7d01e50bdfb4a6ecc71acc702..1e8422379630533281749bb8a598dc62d941a2c7 100644
--- a/src/controls/plugin.cpp
+++ b/src/controls/plugin.cpp
@@ -39,6 +39,8 @@
 **
 ****************************************************************************/
 
+#include "plugin.h"
+
 #include "qquickaction_p.h"
 #include "qquickexclusivegroup_p.h"
 #include "qquickmenu_p.h"
@@ -46,22 +48,19 @@
 #include "qquickstack_p.h"
 #include "qquickdesktopiconprovider_p.h"
 
-#include <qqml.h>
-#include <qqmlengine.h>
-#include <qqmlextensionplugin.h>
-#include <qquickwindow.h>
-
-QT_BEGIN_NAMESPACE
+#include "Private/qquickrangemodel_p.h"
+#include "Private/qquickwheelarea_p.h"
+#include "Private/qquicktooltip_p.h"
+#include "Private/qquickcontrolsettings_p.h"
+#include "Private/qquickspinboxvalidator_p.h"
+#include "Private/qquickabstractstyle_p.h"
+#include "Private/qquickcontrolsprivate_p.h"
 
-class QtQuickControlsPlugin : public QQmlExtensionPlugin
-{
-    Q_OBJECT
-    Q_PLUGIN_METADATA(IID "org.qt-project.Qt.QQmlExtensionInterface/1.0")
+#ifndef QT_NO_WIDGETS
+#include "Private/qquickstyleitem_p.h"
+#endif
 
-public:
-    void registerTypes(const char *uri);
-    void initializeEngine(QQmlEngine *engine, const char *uri);
-};
+QT_BEGIN_NAMESPACE
 
 void QtQuickControlsPlugin::registerTypes(const char *uri)
 {
@@ -82,9 +81,21 @@ void QtQuickControlsPlugin::registerTypes(const char *uri)
 void QtQuickControlsPlugin::initializeEngine(QQmlEngine *engine, const char *uri)
 {
     Q_UNUSED(uri);
+
+    // Register private API
+    const char *private_uri = "QtQuick.Controls.Private";
+    qmlRegisterType<QQuickAbstractStyle>(private_uri, 1, 0, "AbstractStyle");
+    qmlRegisterType<QQuickPadding>();
+    qmlRegisterType<QQuickRangeModel>(private_uri, 1, 0, "RangeModel");
+    qmlRegisterType<QQuickWheelArea>(private_uri, 1, 0, "WheelArea");
+    qmlRegisterType<QQuickSpinBoxValidator>(private_uri, 1, 0, "SpinBoxValidator");
+    qmlRegisterSingletonType<QQuickTooltip>(private_uri, 1, 0, "Tooltip", QQuickControlsPrivate::registerTooltipModule);
+    qmlRegisterSingletonType<QQuickControlSettings>(private_uri, 1, 0, "Settings", QQuickControlsPrivate::registerSettingsModule);
+#ifndef QT_NO_WIDGETS
+    qmlRegisterType<QQuickStyleItem>(private_uri, 1, 0, "StyleItem");
+#endif
+
     engine->addImageProvider("desktoptheme", new QQuickDesktopIconProvider);
 }
 
 QT_END_NAMESPACE
-
-#include "plugin.moc"
diff --git a/src/private/plugin.cpp b/src/controls/plugin.h
similarity index 65%
rename from src/private/plugin.cpp
rename to src/controls/plugin.h
index 4a62c6a5bf7c2b1d9f82241024fd945fffdafbb4..fe06e8069ba5e87601cbb4a8b74ba7e4e9df2590 100644
--- a/src/private/plugin.cpp
+++ b/src/controls/plugin.h
@@ -39,46 +39,24 @@
 **
 ****************************************************************************/
 
-#include "qquickrangemodel_p.h"
-#include "qquickwheelarea_p.h"
-#include "qquicktooltip_p.h"
-#include "qquickcontrolsettings_p.h"
-#include "qquickspinboxvalidator_p.h"
-#include "qquickabstractstyle_p.h"
-#include "qquickcontrolsprivate_p.h"
+#ifndef PLUGIN_H
+#define PLUGIN_H
 
-#ifndef QT_NO_WIDGETS
-#include "qquickstyleitem_p.h"
-#endif
-
-#include <qqml.h>
-#include <qqmlextensionplugin.h>
+#include <QtQml/qqmlextensionplugin.h>
+#include <QtQml/qqml.h>
+#include <QtQml/qqmlengine.h>
 
 QT_BEGIN_NAMESPACE
 
-class QtQuickControlsPrivatePlugin : public QQmlExtensionPlugin
+class QtQuickControlsPlugin: public QQmlExtensionPlugin
 {
     Q_OBJECT
     Q_PLUGIN_METADATA(IID "org.qt-project.Qt.QQmlExtensionInterface/1.0")
-
 public:
     void registerTypes(const char *uri);
+    void initializeEngine(QQmlEngine *engine, const char *uri);
 };
 
-void QtQuickControlsPrivatePlugin::registerTypes(const char *uri)
-{
-    qmlRegisterType<QQuickAbstractStyle>(uri, 1, 0, "AbstractStyle");
-    qmlRegisterType<QQuickPadding>();
-    qmlRegisterType<QQuickRangeModel>(uri, 1, 0, "RangeModel");
-    qmlRegisterType<QQuickWheelArea>(uri, 1, 0, "WheelArea");
-    qmlRegisterType<QQuickSpinBoxValidator>(uri, 1, 0, "SpinBoxValidator");
-    qmlRegisterSingletonType<QQuickTooltip>(uri, 1, 0, "Tooltip", QQuickControlsPrivate::registerTooltipModule);
-    qmlRegisterSingletonType<QQuickControlSettings>(uri, 1, 0, "Settings", QQuickControlsPrivate::registerSettingsModule);
-#ifndef QT_NO_WIDGETS
-    qmlRegisterType<QQuickStyleItem>(uri, 1, 0, "StyleItem");
-#endif
-}
-
 QT_END_NAMESPACE
 
-#include "plugin.moc"
+#endif // PLUGIN_H
diff --git a/src/private/private.pro b/src/private/private.pro
deleted file mode 100644
index 1c71d1d4b8fffe92b1dda777f31506aa8e5a992c..0000000000000000000000000000000000000000
--- a/src/private/private.pro
+++ /dev/null
@@ -1,28 +0,0 @@
-TARGET  = qtquickcontrolsprivateplugin
-TARGETPATH = QtQuick/Controls/Private
-
-QT += qml quick gui-private core-private
-
-include(private.pri)
-
-SOURCES += $$PWD/plugin.cpp
-
-# private qml files
-QML_FILES += \
-    AbstractCheckable.qml \
-    TabBar.qml \
-    BasicButton.qml \
-    Control.qml \
-    Style.qml \
-    style.js \
-    ModalPopupBehavior.qml \
-    StackViewSlideDelegate.qml \
-    StackView.js \
-    ScrollViewHelper.qml \
-    ScrollBar.qml \
-    FocusFrame.qml
-
-osx: LIBS += -framework Carbon
-
-CONFIG += no_cxx_module
-load(qml_plugin)
diff --git a/src/src.pro b/src/src.pro
index 2108ac7e673fd63cc1990348a08406fc5232cd40..a440948af78b516c0d30ddf73a1d797494f99852 100644
--- a/src/src.pro
+++ b/src/src.pro
@@ -1,5 +1,5 @@
 TEMPLATE = subdirs
 
-SUBDIRS += controls styles private
+SUBDIRS += controls
 
 SUBDIRS += layouts
diff --git a/src/styles/doc/qtquickcontrolsstyles.qdocconf b/src/styles/doc/qtquickcontrolsstyles.qdocconf
deleted file mode 100644
index 6c1e51b1b732e7c36b01e52dbc7d8cadcb5ed217..0000000000000000000000000000000000000000
--- a/src/styles/doc/qtquickcontrolsstyles.qdocconf
+++ /dev/null
@@ -1,43 +0,0 @@
-include($QT_INSTALL_DOCS/global/qt-module-defaults.qdocconf)
-
-project                 = QtQuickControlsStyles
-description             = Qt Quick Controls Styles Reference Documentation
-url                     = http://qt-project.org/doc/qt-$QT_VER/qtquickcontrolsstyles/
-version                 = $QT_VERSION
-
-qhp.projects            = QtQuickControlsStyles
-
-qhp.QtQuickControlsStyles.file          = qtquickcontrolsstyles.qhp
-qhp.QtQuickControlsStyles.namespace     = org.qt-project.qtquickcontrolsstyles.$QT_VERSION_TAG
-qhp.QtQuickControlsStyles.virtualFolder = qtquickcontrolsstyles
-qhp.QtQuickControlsStyles.indexTitle    = Qt Quick Controls Styles
-qhp.QtQuickControlsStyles.indexRoot     =
-#qhp.QtQuickControlsStyles.extraFiles = style/qtquickcontrolsstyles.css
-
-qhp.QtQuickControlsStyles.filterAttributes    = qtquickcontrolsstyles $QT_VERSION qtrefdoc
-qhp.QtQuickControlsStyles.customFilters.Qt.name = QtQuickControlsStyles $QT_VERSION
-qhp.QtQuickControlsStyles.customFilters.Qt.filterAttributes = qtquickcontrolsstyles $QT_VERSION
-
-qhp.QtQuickControlsStyles.subprojects = qtquickcontrolsstylesqmltypes
-qhp.QtQuickControlsStyles.subprojects.qtquickcontrolsstylesqmltypes.title = QML Types
-qhp.QtQuickControlsStyles.subprojects.qtquickcontrolsstylesqmltypes.indexTitle = Qt Quick Controls Styles QML Types
-qhp.QtQuickControlsStyles.subprojects.qtquickcontrolsstylesqmltypes.selectors = class fake:qmlclass
-qhp.QtQuickControlsStyles.subprojects.qtquickcontrolsstylesqmltypes.sortPages = true
-
-depends = qtqml qtquick qtwidgets qtdoc qtquicklayouts qtquickcontrols
-
-exampledirs += ../../../examples/quick/controlsstyles
-
-# Specify the install path under QT_INSTALL_EXAMPLES
-examplesinstallpath = quick/controlsstyles
-
-headerdirs += ../Base
-
-sourcedirs += ../Base
-
-sources += ../../private/qquickstyleitem.cpp \
-           ../../private/Style.qml \
-           ../../private/qquickabstractstyle.h \
-           ../../private/qquickabstractstyle.cpp
-
-imagedirs += images
diff --git a/src/styles/styles.pro b/src/styles/styles.pro
deleted file mode 100644
index 158c1dd135da11189ab3a613dc3ebbebe7831f7d..0000000000000000000000000000000000000000
--- a/src/styles/styles.pro
+++ /dev/null
@@ -1,69 +0,0 @@
-TARGETPATH = QtQuick/Controls/Styles
-
-QMAKE_DOCS = $$PWD/doc/qtquickcontrolsstyles.qdocconf
-
-# Base
-QML_FILES = \
-    Base/ButtonStyle.qml \
-    Base/CheckBoxStyle.qml \
-    Base/ComboBoxStyle.qml \
-    Base/FocusFrameStyle.qml \
-    Base/GroupBoxStyle.qml \
-    Base/MenuBarStyle.qml \
-    Base/MenuStyle.qml \
-    Base/ProgressBarStyle.qml \
-    Base/RadioButtonStyle.qml \
-    Base/ScrollViewStyle.qml\
-    Base/SliderStyle.qml \
-    Base/SpinBoxStyle.qml \
-    Base/StatusBarStyle.qml \
-    Base/TableViewStyle.qml \
-    Base/TabViewStyle.qml \
-    Base/TextFieldStyle.qml \
-    Base/ToolBarStyle.qml \
-    Base/ToolButtonStyle.qml
-
-# Desktop
-QML_FILES += \
-    Desktop/ButtonStyle.qml \
-    Desktop/CheckBoxStyle.qml \
-    Desktop/ComboBoxStyle.qml \
-    Desktop/FocusFrameStyle.qml \
-    Desktop/GroupBoxStyle.qml \
-    Desktop/MenuBarStyle.qml \
-    Desktop/MenuStyle.qml \
-    Desktop/ProgressBarStyle.qml \
-    Desktop/RadioButtonStyle.qml \
-    Desktop/ScrollViewStyle.qml \
-    Desktop/SliderStyle.qml \
-    Desktop/SpinBoxStyle.qml \
-    Desktop/StatusBarStyle.qml\
-    Desktop/TabViewStyle.qml \
-    Desktop/TableViewStyle.qml \
-    Desktop/TextFieldStyle.qml \
-    Desktop/ToolBarStyle.qml \
-    Desktop/ToolButtonStyle.qml
-
-# Images
-QML_FILES += \
-    Base/images/button.png \
-    Base/images/button_down.png \
-    Base/images/tab.png \
-    Base/images/header.png \
-    Base/images/groupbox.png \
-    Base/images/focusframe.png \
-    Base/images/tab_selected.png \
-    Base/images/scrollbar-handle-horizontal.png \
-    Base/images/scrollbar-handle-vertical.png \
-    Base/images/progress-indeterminate.png \
-    Base/images/editbox.png \
-    Base/images/arrow-up.png \
-    Base/images/arrow-up@2x.png \
-    Base/images/arrow-down.png \
-    Base/images/arrow-down@2x.png \
-    Base/images/arrow-left.png \
-    Base/images/arrow-left@2x.png \
-    Base/images/arrow-right.png \
-    Base/images/arrow-right@2x.png
-
-load(qml_module)