diff --git a/qtcreator.pro b/qtcreator.pro
index fe0e0c2795fb3803fcb557886ec67619278fdc6c..e1e65631d129bdf6ef0151ed5a5200e293cc51f9 100644
--- a/qtcreator.pro
+++ b/qtcreator.pro
@@ -12,5 +12,3 @@ TEMPLATE  = subdirs
 CONFIG   += ordered
 
 SUBDIRS = src
-
-message($$INSTALLS)
diff --git a/src/app/app.pro b/src/app/app.pro
index c42e206d5d6af3a490ee72a1bd45419875fa73d2..a8cb1a8e9dcea30b8b39e0394dea514025dcc37a 100644
--- a/src/app/app.pro
+++ b/src/app/app.pro
@@ -16,8 +16,8 @@ linux-* {
     ISGCC33=$$(GCC33)
     !equals(ISGCC33, 1):QT += svg dbus
 
-	binaries.files          += bin/qtcreator
-	binaries.path            = $$LOCATION/bin
+    target.path  = /bin
+    INSTALLS    += target
 
 }
 
@@ -28,55 +28,7 @@ DESTDIR = ../../bin
 
 SOURCES += main.cpp
 
-macx {
-        SNIPPETS.path = Contents/Resources
-        SNIPPETS.files = $$IDE_SOURCE_TREE/bin/snippets
-        TEMPLATES.path = Contents/Resources
-        TEMPLATES.files = $$IDE_SOURCE_TREE/bin/templates
-        DESIGNER.path = Contents/Resources
-        DESIGNER.files = $$IDE_SOURCE_TREE/bin/designer
-        SCHEMES.path = Contents/Resources
-        SCHEMES.files = $$IDE_SOURCE_TREE/bin/schemes
-        GDBDEBUGGER.path = Contents/Resources
-        GDBDEBUGGER.files = $$IDE_SOURCE_TREE/bin/gdbmacros
-        LICENSE.path = Contents/Resources
-        LICENSE.files = $$IDE_SOURCE_TREE/bin/license.txt
-        RUNINTERMINAL.path = Contents/Resources
-        RUNINTERMINAL.files = $$IDE_SOURCE_TREE/bin/runInTerminal.command
-        QMAKE_BUNDLE_DATA += SNIPPETS TEMPLATES DESIGNER SCHEMES GDBDEBUGGER LICENSE RUNINTERMINAL
-        QMAKE_INFO_PLIST = $$PWD/Info.plist
-}
-!macx {
-    # make sure the resources are in place
-    !exists($$OUT_PWD/app.pro) {
-        unix:SEPARATOR = ;
-        win32:SEPARATOR = &
-        # we are shadow build
-        COPYSRC = snippets \
-                   templates \
-                   designer \
-                   schemes \
-                   gdbmacros
-        COPYDEST = $${OUT_PWD}/../../bin
-        win32:COPYDEST ~= s|/+|\|
-        for(tmp,COPYSRC) {
-          REALSRC = $$IDE_SOURCE_TREE/bin/$$tmp
-          REALDEST = $$COPYDEST/$$tmp
-          win32:tmp ~= s|/+|\|
-          win32:REALSRC ~= s|/+|\|
-          win32:REALDEST ~= s|/+|\|
-          QMAKE_POST_LINK += $${QMAKE_COPY_DIR} $${REALSRC} $${REALDEST} $$SEPARATOR
-        }
-    }
-}
-
-linux-* {
-    #do the rpath by hand since it's not possible to use ORIGIN in QMAKE_RPATHDIR
-    QMAKE_RPATHDIR += \$\$ORIGIN/../lib
-    IDE_PLUGIN_RPATH = $$join(QMAKE_RPATHDIR, ":")
-    QMAKE_LFLAGS += -Wl,-z,origin \'-Wl,-rpath,$${IDE_PLUGIN_RPATH}\'
-    QMAKE_RPATHDIR =
-}
+include(../rpath.pri)
 
 win32 {
         RC_FILE = qtcreator.rc
@@ -85,3 +37,4 @@ win32 {
 macx {
         ICON = qtcreator.icns
 }
+
diff --git a/src/app/main.cpp b/src/app/main.cpp
index 479ef576c3b86e086882464368cb9bc9793b3e16..c10c476991dbf26eb1ad67b63b69409c95bb3a79 100644
--- a/src/app/main.cpp
+++ b/src/app/main.cpp
@@ -180,12 +180,16 @@ static inline QStringList getPluginPaths()
     QDir rootDir = QApplication::applicationDirPath();
     rootDir.cdUp();
     const QString rootDirPath = rootDir.canonicalPath();
-    // 1) "lib" dir
+    // 1) "plugins" (Win/Linux)
     QString pluginPath = rootDirPath;
     pluginPath += QDir::separator();
     pluginPath += QLatin1String("lib");
+    pluginPath += QDir::separator();
+    pluginPath += QLatin1String("qtcreator");
+    pluginPath += QDir::separator();
+    pluginPath += QLatin1String("plugins");
     rc.push_back(pluginPath);
-    // 2) "PlugIns"
+    // 2) "PlugIns" (OS X)
     pluginPath = rootDirPath;
     pluginPath += QDir::separator();
     pluginPath += QLatin1String("PlugIns");
diff --git a/src/qworkbench.pri b/src/qworkbench.pri
index 0fe4418fcae44b335a00f210094bb094d9f083cb..296e2170b3dcde2b057a6a4a78001a22784f7213 100644
--- a/src/qworkbench.pri
+++ b/src/qworkbench.pri
@@ -21,7 +21,7 @@ macx {
     contains(QT_CONFIG, ppc):CONFIG += ppc x86
 } else {
     IDE_APP_TARGET   = qtcreator
-    IDE_LIBRARY_PATH = $$IDE_BUILD_TREE/share/lib/qtcreator
+    IDE_LIBRARY_PATH = $$IDE_BUILD_TREE/lib/qtcreator
     IDE_PLUGIN_PATH  = $$IDE_LIBRARY_PATH/plugins/
 }
 IDE_APP_PATH = $$IDE_BUILD_TREE/bin
diff --git a/src/qworkbenchlibrary.pri b/src/qworkbenchlibrary.pri
index 5425e1813d62552d90c39fc6127a5c77999982f2..389d513eec9da9d5ae6dc08ff571f62918b873c7 100644
--- a/src/qworkbenchlibrary.pri
+++ b/src/qworkbenchlibrary.pri
@@ -7,21 +7,13 @@ win32 {
 
 DESTDIR = $$IDE_LIBRARY_PATH
 
-macx {
-        QMAKE_LFLAGS_SONAME = -Wl,-install_name,@executable_path/../PlugIns/
-} else:linux-* {
-    #do the rpath by hand since it's not possible to use ORIGIN in QMAKE_RPATHDIR
-    QMAKE_RPATHDIR += \$\$ORIGIN
-    IDE_PLUGIN_RPATH = $$join(QMAKE_RPATHDIR, ":")
-    QMAKE_LFLAGS += -Wl,-z,origin \'-Wl,-rpath,$${IDE_PLUGIN_RPATH}\'
-    QMAKE_RPATHDIR =
-}
+include(../rpath.pri)
 
 TARGET = $$qtLibraryTarget($$TARGET)
 
 contains(QT_CONFIG, reduce_exports):CONFIG += hide_symbols
 
 linux-* {
-	target.path = $$LOCATION/lib/qtcreator
+	target.path = /lib/qtcreator
 	INSTALLS += target
-}
+    }
diff --git a/src/qworkbenchplugin.pri b/src/qworkbenchplugin.pri
index d73f0e84567eed8acce246828db00325812397d0..eaf98b4f5d5f9525013c8c343a654674a6c3460c 100644
--- a/src/qworkbenchplugin.pri
+++ b/src/qworkbenchplugin.pri
@@ -52,8 +52,8 @@ contains(QT_CONFIG, reduce_exports):CONFIG += hide_symbols
 CONFIG += plugin
 
 linux-* {
-    target.path = /lib/qtcreator/plugins
+    target.path = /lib/qtcreator/plugins/$$PROVIDER
     pluginspec.files += $${TARGET}.pluginspec
-    pluginspec.path = /lib/qtcreator/plugins
+    pluginspec.path = /lib/qtcreator/plugins/$$PROVIDER
     INSTALLS += target pluginspec
 }
diff --git a/src/rpath.pri b/src/rpath.pri
new file mode 100644
index 0000000000000000000000000000000000000000..c57ed469f6e19684246dabd8b61728cbf549ab5a
--- /dev/null
+++ b/src/rpath.pri
@@ -0,0 +1,15 @@
+macx {
+    # this is needed for the binary itself?
+    QMAKE_LFLAGS_SONAME = -Wl,-install_name,@executable_path/../PlugIns/
+} else:linux-* {
+    #do the rpath by hand since it's not possible to use ORIGIN in QMAKE_RPATHDIR
+    QMAKE_RPATHDIR += \$\$ORIGIN/../lib/qtcreator
+    IDE_PLUGIN_RPATH = $$join(QMAKE_RPATHDIR, ":")
+    message($$QMAKE_RPATHDIR)
+    message($$IDE_PLUGIN_RPATH)
+ 
+    QMAKE_LFLAGS += -Wl,-z,origin \'-Wl,-rpath,$${IDE_PLUGIN_RPATH}\'
+    QMAKE_RPATHDIR =
+}
+
+