diff --git a/src/plugins/debugger/debuggerkitconfigwidget.cpp b/src/plugins/debugger/debuggerkitconfigwidget.cpp
index f0c40afa896c0b0945200f5e4672d93f8f5c03bb..127909aaa4db6824fc3582ea5f6b1e699a0f8526 100644
--- a/src/plugins/debugger/debuggerkitconfigwidget.cpp
+++ b/src/plugins/debugger/debuggerkitconfigwidget.cpp
@@ -65,20 +65,12 @@ static const char dgbToolsDownloadLink64C[] = "http://www.microsoft.com/whdc/dev
 // -----------------------------------------------------------------------
 
 DebuggerKitConfigWidget::DebuggerKitConfigWidget(ProjectExplorer::Kit *workingCopy,
-                                                 const DebuggerKitInformation *ki,
-                                                 QWidget *parent) :
-    ProjectExplorer::KitConfigWidget(parent),
-    m_kit(workingCopy),
+                                                 const DebuggerKitInformation *ki)
+  : KitConfigWidget(workingCopy),
     m_info(ki),
-    m_label(new QLabel(this)),
-    m_button(new QPushButton(tr("Manage..."), this))
+    m_label(new QLabel),
+    m_button(new QPushButton(tr("Manage...")))
 {
-    setToolTip(tr("The debugger to use for this kit."));
-
-    QHBoxLayout *layout = new QHBoxLayout(this);
-    layout->setMargin(0);
-    layout->addWidget(m_label);
-
     // ToolButton with Menu, defaulting to 'Autodetect'.
     QMenu *buttonMenu = new QMenu(m_button);
     QAction *autoDetectAction = buttonMenu->addAction(tr("Auto-detect"));
@@ -90,6 +82,16 @@ DebuggerKitConfigWidget::DebuggerKitConfigWidget(ProjectExplorer::Kit *workingCo
     refresh();
 }
 
+QString DebuggerKitConfigWidget::toolTip() const
+{
+    return tr("The debugger to use for this kit.");
+}
+
+QWidget *DebuggerKitConfigWidget::mainWidget() const
+{
+       return m_label;
+}
+
 QWidget *DebuggerKitConfigWidget::buttonWidget() const
 {
        return m_button;
diff --git a/src/plugins/debugger/debuggerkitconfigwidget.h b/src/plugins/debugger/debuggerkitconfigwidget.h
index 505feca5585170e3b0e76e601828e1c4e6970ab0..93fc7585dbe0aa636020fcc39aca986ed0eddc35 100644
--- a/src/plugins/debugger/debuggerkitconfigwidget.h
+++ b/src/plugins/debugger/debuggerkitconfigwidget.h
@@ -62,23 +62,23 @@ class DebuggerKitConfigWidget : public ProjectExplorer::KitConfigWidget
 
 public:
     DebuggerKitConfigWidget(ProjectExplorer::Kit *workingCopy,
-                            const DebuggerKitInformation *ki,
-                            QWidget *parent = 0);
+                            const DebuggerKitInformation *ki);
 
     QString displayName() const;
+    QString toolTip() const;
 
     void makeReadOnly();
 
     void refresh();
 
     QWidget *buttonWidget() const;
+    QWidget *mainWidget() const;
 
 private slots:
     void autoDetectDebugger();
     void showDialog();
 
 private:
-    ProjectExplorer::Kit *m_kit;
     const DebuggerKitInformation *m_info;
     QLabel *m_label;
     QPushButton *m_button;
diff --git a/src/plugins/projectexplorer/kitconfigwidget.h b/src/plugins/projectexplorer/kitconfigwidget.h
index c9239f3312997e4067454815f7461dc22a2979b0..b1d518900e2d17fe198746379bdb8c43f3cfb2ac 100644
--- a/src/plugins/projectexplorer/kitconfigwidget.h
+++ b/src/plugins/projectexplorer/kitconfigwidget.h
@@ -34,30 +34,34 @@
 
 #include <QWidget>
 
-QT_FORWARD_DECLARE_CLASS(QGridLayout)
-
 namespace ProjectExplorer {
 
+class Kit;
+
 // --------------------------------------------------------------------------
 // KitConfigWidget
 // --------------------------------------------------------------------------
 
-class PROJECTEXPLORER_EXPORT KitConfigWidget : public QWidget
+class PROJECTEXPLORER_EXPORT KitConfigWidget : public QObject
 {
     Q_OBJECT
 
 public:
-    KitConfigWidget(QWidget *parent = 0) : QWidget(parent)
-    { }
+    KitConfigWidget(Kit *kit) : m_kit(kit)  { }
 
     virtual QString displayName() const = 0;
+    virtual QString toolTip() const { return QString(); }
     virtual void makeReadOnly() = 0;
     virtual void refresh() = 0;
 
+    virtual QWidget *mainWidget() const = 0;
     virtual QWidget *buttonWidget() const { return 0; }
 
 signals:
     void dirty();
+
+protected:
+    ProjectExplorer::Kit *m_kit;
 };
 
 } // namespace ProjectExplorer
diff --git a/src/plugins/projectexplorer/kitinformation.cpp b/src/plugins/projectexplorer/kitinformation.cpp
index 1ee06ab73d2546a37b9e4800733a7b06ef98930b..3a3c398dcf88e10605ec50101d866ad7f8ccb858 100644
--- a/src/plugins/projectexplorer/kitinformation.cpp
+++ b/src/plugins/projectexplorer/kitinformation.cpp
@@ -288,7 +288,6 @@ QList<Task> DeviceTypeKitInformation::validate(const Kit *k) const
 
 KitConfigWidget *DeviceTypeKitInformation::createConfigWidget(Kit *k) const
 {
-    Q_ASSERT(k);
     return new Internal::DeviceTypeInformationConfigWidget(k);
 }
 
@@ -381,7 +380,6 @@ void DeviceKitInformation::fix(Kit *k)
 
 KitConfigWidget *DeviceKitInformation::createConfigWidget(Kit *k) const
 {
-    Q_ASSERT(k);
     return new Internal::DeviceInformationConfigWidget(k);
 }
 
diff --git a/src/plugins/projectexplorer/kitinformationconfigwidget.cpp b/src/plugins/projectexplorer/kitinformationconfigwidget.cpp
index 78e3927689d12737383ee2cc4b87741c27506762..03ca32538adf721618bf290124b7024f119d2330 100644
--- a/src/plugins/projectexplorer/kitinformationconfigwidget.cpp
+++ b/src/plugins/projectexplorer/kitinformationconfigwidget.cpp
@@ -43,7 +43,6 @@
 #include <utils/pathchooser.h>
 
 #include <QComboBox>
-#include <QHBoxLayout>
 #include <QLabel>
 #include <QPushButton>
 
@@ -54,21 +53,12 @@ namespace Internal {
 // SysRootInformationConfigWidget:
 // --------------------------------------------------------------------------
 
-SysRootInformationConfigWidget::SysRootInformationConfigWidget(Kit *k, QWidget *parent) :
-    KitConfigWidget(parent),
-    m_kit(k)
+SysRootInformationConfigWidget::SysRootInformationConfigWidget(Kit *k) :
+    KitConfigWidget(k)
 {
-    setToolTip(tr("The root directory of the system image to use.<br>"
-                  "Leave empty when building for the desktop."));
-    QHBoxLayout *layout = new QHBoxLayout(this);
-    layout->setMargin(0);
     m_chooser = new Utils::PathChooser;
-    m_chooser->setContentsMargins(0, 0, 0, 0);
-    layout->addWidget(m_chooser);
     m_chooser->setExpectedKind(Utils::PathChooser::ExistingDirectory);
-
     m_chooser->setFileName(SysRootKitInformation::sysRoot(k));
-
     connect(m_chooser, SIGNAL(changed(QString)), this, SLOT(pathWasChanged()));
 }
 
@@ -77,6 +67,12 @@ QString SysRootInformationConfigWidget::displayName() const
     return tr("Sysroot:");
 }
 
+QString SysRootInformationConfigWidget::toolTip() const
+{
+    return tr("The root directory of the system image to use.<br>"
+                  "Leave empty when building for the desktop.");
+}
+
 void SysRootInformationConfigWidget::refresh()
 {
     m_chooser->setFileName(SysRootKitInformation::sysRoot(m_kit));
@@ -87,6 +83,11 @@ void SysRootInformationConfigWidget::makeReadOnly()
     m_chooser->setEnabled(false);
 }
 
+QWidget *SysRootInformationConfigWidget::mainWidget() const
+{
+    return m_chooser->lineEdit();
+}
+
 QWidget *SysRootInformationConfigWidget::buttonWidget() const
 {
     return m_chooser->buttonAtIndex(0);
@@ -101,22 +102,13 @@ void SysRootInformationConfigWidget::pathWasChanged()
 // ToolChainInformationConfigWidget:
 // --------------------------------------------------------------------------
 
-ToolChainInformationConfigWidget::ToolChainInformationConfigWidget(Kit *k, QWidget *parent) :
-    KitConfigWidget(parent),
-    m_isReadOnly(false), m_kit(k),
-    m_comboBox(new QComboBox), m_manageButton(new QPushButton(this))
+ToolChainInformationConfigWidget::ToolChainInformationConfigWidget(Kit *k) :
+    KitConfigWidget(k), m_isReadOnly(false)
 {
-    setToolTip(tr("The compiler to use for building.<br>"
-                  "Make sure the compiler will produce binaries compatible with the target device, "
-                  "Qt version and other libraries used."));
     ToolChainManager *tcm = ToolChainManager::instance();
 
-    QHBoxLayout *layout = new QHBoxLayout(this);
-    layout->setMargin(0);
-    m_comboBox->setContentsMargins(0, 0, 0, 0);
+    m_comboBox = new QComboBox;
     m_comboBox->setEnabled(false);
-    m_comboBox->setSizePolicy(QSizePolicy::MinimumExpanding, QSizePolicy::Fixed);
-    layout->addWidget(m_comboBox);
 
     foreach (ToolChain *tc, tcm->toolChains())
         toolChainAdded(tc);
@@ -126,8 +118,8 @@ ToolChainInformationConfigWidget::ToolChainInformationConfigWidget(Kit *k, QWidg
     refresh();
     connect(m_comboBox, SIGNAL(currentIndexChanged(int)), this, SLOT(currentToolChainChanged(int)));
 
+    m_manageButton = new QPushButton(tr("Manage..."));
     m_manageButton->setContentsMargins(0, 0, 0, 0);
-    m_manageButton->setText(tr("Manage..."));
     connect(m_manageButton, SIGNAL(clicked()), this, SLOT(manageToolChains()));
 
     connect(tcm, SIGNAL(toolChainAdded(ProjectExplorer::ToolChain*)),
@@ -143,6 +135,13 @@ QString ToolChainInformationConfigWidget::displayName() const
     return tr("Compiler:");
 }
 
+QString ToolChainInformationConfigWidget::toolTip() const
+{
+    return tr("The compiler to use for building.<br>"
+              "Make sure the compiler will produce binaries compatible with the target device, "
+              "Qt version and other libraries used.");
+}
+
 void ToolChainInformationConfigWidget::refresh()
 {
     m_comboBox->setCurrentIndex(indexOf(ToolChainKitInformation::toolChain(m_kit)));
@@ -153,6 +152,11 @@ void ToolChainInformationConfigWidget::makeReadOnly()
     m_comboBox->setEnabled(false);
 }
 
+QWidget *ToolChainInformationConfigWidget::mainWidget() const
+{
+    return m_comboBox;
+}
+
 QWidget *ToolChainInformationConfigWidget::buttonWidget() const
 {
     return m_manageButton;
@@ -222,35 +226,35 @@ int ToolChainInformationConfigWidget::indexOf(const ToolChain *tc)
 // DeviceTypeInformationConfigWidget:
 // --------------------------------------------------------------------------
 
-DeviceTypeInformationConfigWidget::DeviceTypeInformationConfigWidget(Kit *workingCopy, QWidget *parent) :
-    KitConfigWidget(parent),
-    m_isReadOnly(false), m_kit(workingCopy),
-    m_comboBox(new QComboBox)
+DeviceTypeInformationConfigWidget::DeviceTypeInformationConfigWidget(Kit *workingCopy) :
+    KitConfigWidget(workingCopy), m_isReadOnly(false), m_comboBox(new QComboBox)
 {
-    setToolTip(tr("The type of device to run applications on."));
-    QHBoxLayout *layout = new QHBoxLayout(this);
-    layout->setMargin(0);
-    m_comboBox->setContentsMargins(0, 0, 0, 0);
-    m_comboBox->setSizePolicy(QSizePolicy::MinimumExpanding, QSizePolicy::Fixed);
-    layout->addWidget(m_comboBox);
-
     QList<IDeviceFactory *> factories
             = ExtensionSystem::PluginManager::instance()->getObjects<IDeviceFactory>();
     foreach (IDeviceFactory *factory, factories) {
-        foreach (Core::Id id, factory->availableCreationIds()) {
+        foreach (Core::Id id, factory->availableCreationIds())
             m_comboBox->addItem(factory->displayNameForId(id), id.uniqueIdentifier());
-        }
     }
 
     refresh();
     connect(m_comboBox, SIGNAL(currentIndexChanged(int)), this, SLOT(currentTypeChanged(int)));
 }
 
+QWidget *DeviceTypeInformationConfigWidget::mainWidget() const
+{
+    return m_comboBox;
+}
+
 QString DeviceTypeInformationConfigWidget::displayName() const
 {
     return tr("Device type:");
 }
 
+QString DeviceTypeInformationConfigWidget::toolTip() const
+{
+    return tr("The type of device to run applications on.");
+}
+
 void DeviceTypeInformationConfigWidget::refresh()
 {
     Core::Id devType = DeviceTypeKitInformation::deviceTypeId(m_kit);
@@ -279,39 +283,38 @@ void DeviceTypeInformationConfigWidget::currentTypeChanged(int idx)
 // DeviceInformationConfigWidget:
 // --------------------------------------------------------------------------
 
-DeviceInformationConfigWidget::DeviceInformationConfigWidget(Kit *workingCopy, QWidget *parent) :
-    KitConfigWidget(parent),
-    m_isReadOnly(false), m_kit(workingCopy),
-    m_comboBox(new QComboBox), m_manageButton(new QPushButton(this)),
+DeviceInformationConfigWidget::DeviceInformationConfigWidget(Kit *workingCopy) :
+    KitConfigWidget(workingCopy),
+    m_isReadOnly(false),
+    m_comboBox(new QComboBox),
     m_model(new DeviceManagerModel(DeviceManager::instance()))
 {
-    connect(m_model, SIGNAL(modelAboutToBeReset()), SLOT(modelAboutToReset()));
-    connect(m_model, SIGNAL(modelReset()), SLOT(modelReset()));
-
-    setToolTip(tr("The device to run the applications on."));
-
-    QHBoxLayout *layout = new QHBoxLayout(this);
-    layout->setMargin(0);
-    m_comboBox->setContentsMargins(0, 0, 0, 0);
-    m_comboBox->setSizePolicy(QSizePolicy::MinimumExpanding, QSizePolicy::Fixed);
-    layout->addWidget(m_comboBox);
-
     m_comboBox->setModel(m_model);
 
-    m_manageButton->setContentsMargins(0, 0, 0, 0);
-    m_manageButton->setText(tr("Manage..."));
+    m_manageButton = new QPushButton(tr("Manage"));
 
     refresh();
+    connect(m_model, SIGNAL(modelAboutToBeReset()), SLOT(modelAboutToReset()));
+    connect(m_model, SIGNAL(modelReset()), SLOT(modelReset()));
     connect(m_comboBox, SIGNAL(currentIndexChanged(int)), this, SLOT(currentDeviceChanged()));
-
     connect(m_manageButton, SIGNAL(clicked()), this, SLOT(manageDevices()));
 }
 
+QWidget *DeviceInformationConfigWidget::mainWidget() const
+{
+    return m_comboBox;
+}
+
 QString DeviceInformationConfigWidget::displayName() const
 {
     return tr("Device:");
 }
 
+QString DeviceInformationConfigWidget::toolTip() const
+{
+    return tr("The device to run the applications on.");
+}
+
 void DeviceInformationConfigWidget::refresh()
 {
     m_model->setTypeFilter(DeviceTypeKitInformation::deviceTypeId(m_kit));
diff --git a/src/plugins/projectexplorer/kitinformationconfigwidget.h b/src/plugins/projectexplorer/kitinformationconfigwidget.h
index 2f3aaf1dd0f5e0e1e04b5e9af0b7ba6e10f7fd0a..4213dec8193fdaac5afd5f260a7529266c019c77 100644
--- a/src/plugins/projectexplorer/kitinformationconfigwidget.h
+++ b/src/plugins/projectexplorer/kitinformationconfigwidget.h
@@ -44,7 +44,6 @@ namespace Utils { class PathChooser; }
 namespace ProjectExplorer {
 
 class DeviceManagerModel;
-class Kit;
 class ToolChain;
 
 namespace Internal {
@@ -58,18 +57,19 @@ class SysRootInformationConfigWidget : public KitConfigWidget
     Q_OBJECT
 
 public:
-    explicit SysRootInformationConfigWidget(Kit *k, QWidget *parent = 0);
+    explicit SysRootInformationConfigWidget(Kit *k);
 
     QString displayName() const;
     void refresh();
     void makeReadOnly();
     QWidget *buttonWidget() const;
+    QWidget *mainWidget() const;
+    QString toolTip() const;
 
 private slots:
     void pathWasChanged();
 
 private:
-    Kit *m_kit;
     Utils::PathChooser *m_chooser;
 };
 
@@ -82,12 +82,14 @@ class ToolChainInformationConfigWidget : public KitConfigWidget
     Q_OBJECT
 
 public:
-    explicit ToolChainInformationConfigWidget(Kit *k, QWidget *parent = 0);
+    explicit ToolChainInformationConfigWidget(Kit *k);
 
     QString displayName() const;
     void refresh();
     void makeReadOnly();
+    QWidget *mainWidget() const;
     QWidget *buttonWidget() const;
+    QString toolTip() const;
 
 private slots:
     void toolChainAdded(ProjectExplorer::ToolChain *tc);
@@ -101,7 +103,6 @@ private:
     int indexOf(const ToolChain *tc);
 
     bool m_isReadOnly;
-    Kit *m_kit;
     QComboBox *m_comboBox;
     QPushButton *m_manageButton;
 };
@@ -115,9 +116,11 @@ class DeviceTypeInformationConfigWidget : public KitConfigWidget
     Q_OBJECT
 
 public:
-    explicit DeviceTypeInformationConfigWidget(Kit *workingCopy, QWidget *parent = 0);
+    explicit DeviceTypeInformationConfigWidget(Kit *workingCopy);
 
+    QWidget *mainWidget() const;
     QString displayName() const;
+    QString toolTip() const;
     void refresh();
     void makeReadOnly();
 
@@ -126,7 +129,6 @@ private slots:
 
 private:
     bool m_isReadOnly;
-    Kit *m_kit;
     QComboBox *m_comboBox;
 };
 
@@ -139,12 +141,14 @@ class DeviceInformationConfigWidget : public KitConfigWidget
     Q_OBJECT
 
 public:
-    explicit DeviceInformationConfigWidget(Kit *workingCopy, QWidget *parent = 0);
+    explicit DeviceInformationConfigWidget(Kit *workingCopy);
 
+    QWidget *mainWidget() const;
+    QWidget *buttonWidget() const;
     QString displayName() const;
+    QString toolTip() const;
     void refresh();
     void makeReadOnly();
-    QWidget *buttonWidget() const;
 
 private slots:
     void manageDevices();
@@ -154,7 +158,6 @@ private slots:
 
 private:
     bool m_isReadOnly;
-    Kit *m_kit;
     QComboBox *m_comboBox;
     QPushButton *m_manageButton;
     DeviceManagerModel *m_model;
diff --git a/src/plugins/projectexplorer/kitmanagerconfigwidget.cpp b/src/plugins/projectexplorer/kitmanagerconfigwidget.cpp
index 86fc51e64315dd5838ffd7858f3391f8c2bfb049..1a9e6608ceb9ce6b97e0a82e20b270740eceebaa 100644
--- a/src/plugins/projectexplorer/kitmanagerconfigwidget.cpp
+++ b/src/plugins/projectexplorer/kitmanagerconfigwidget.cpp
@@ -33,12 +33,13 @@
 #include "kitmanager.h"
 
 #include <utils/detailswidget.h>
+#include <utils/qtcassert.h>
 
-#include <QHBoxLayout>
 #include <QFileDialog>
 #include <QGridLayout>
 #include <QLabel>
 #include <QLineEdit>
+#include <QPainter>
 #include <QToolButton>
 #include <QScrollArea>
 #include <QSizePolicy>
@@ -47,11 +48,9 @@
 static const char WORKING_COPY_KIT_ID[] = "modified kit";
 
 namespace ProjectExplorer {
-
 namespace Internal {
 
-KitManagerConfigWidget::KitManagerConfigWidget(Kit *k, QWidget *parent) :
-    QWidget(parent),
+KitManagerConfigWidget::KitManagerConfigWidget(Kit *k) :
     m_layout(new QGridLayout),
     m_iconButton(new QToolButton),
     m_nameEdit(new QLineEdit),
@@ -59,30 +58,27 @@ KitManagerConfigWidget::KitManagerConfigWidget(Kit *k, QWidget *parent) :
     m_modifiedKit(new Kit(Core::Id(WORKING_COPY_KIT_ID))),
     m_fixingKit(false)
 {
-    QVBoxLayout *top = new QVBoxLayout(this);
-    top->setMargin(0);
+    m_layout->addWidget(m_nameEdit, 0, WidgetColumn);
+    m_layout->addWidget(m_iconButton, 0, ButtonColumn);
+    setSizePolicy(QSizePolicy::Preferred, QSizePolicy::Preferred);
+
+    QWidget *inner = new QWidget;
+    inner->setLayout(m_layout);
 
     QScrollArea *scroll = new QScrollArea;
+    scroll->setWidget(inner);
     scroll->setFrameShape(QFrame::NoFrame);
     scroll->setWidgetResizable(true);
     scroll->setFocusPolicy(Qt::NoFocus);
-    top->addWidget(scroll);
-
-    Utils::DetailsWidget *details = new Utils::DetailsWidget;
-    details->setState(Utils::DetailsWidget::NoSummary);
-    scroll->setWidget(details);
 
-    QWidget *widget = new QWidget;
+    QGridLayout *mainLayout = new QGridLayout(this);
+    mainLayout->setMargin(1);
+    mainLayout->addWidget(scroll, 0, 0);
 
-    m_layout->setMargin(0);
-    m_layout->setSpacing(6);
-    m_layout->setContentsMargins(6, 0, 6, 0);
-    m_layout->setRowStretch(1, 1);
-    widget->setLayout(m_layout);
+    QString toolTip = tr("Kit name and icon.");
+    setLabel(tr("Name:"), toolTip, 0);
+    m_iconButton->setToolTip(toolTip);
 
-    details->setWidget(widget);
-
-    addToLayout(tr("Name:"), tr("Kit name and icon."), m_nameEdit, m_iconButton);
     discard();
 
     connect(m_iconButton, SIGNAL(clicked()), this, SLOT(setIcon()));
@@ -100,7 +96,7 @@ KitManagerConfigWidget::~KitManagerConfigWidget()
     delete m_modifiedKit;
     // Make sure our workingCopy did not get registered somehow:
     foreach (const Kit *k, KitManager::instance()->kits())
-        Q_ASSERT(k->id() != Core::Id(WORKING_COPY_KIT_ID));
+        QTC_CHECK(k->id() != Core::Id(WORKING_COPY_KIT_ID));
 }
 
 QString KitManagerConfigWidget::displayName() const
@@ -159,10 +155,18 @@ QString KitManagerConfigWidget::validityMessage() const
 
 void KitManagerConfigWidget::addConfigWidget(ProjectExplorer::KitConfigWidget *widget)
 {
-    Q_ASSERT(widget);
-    Q_ASSERT(!m_widgets.contains(widget));
+    QTC_ASSERT(widget, return);
+    QTC_ASSERT(!m_widgets.contains(widget), return);
+
+    QString name = widget->displayName();
+    QString toolTip = widget->toolTip();
+
+    int row = m_layout->rowCount();
+    m_layout->addWidget(widget->mainWidget(), row, WidgetColumn);
+    if (QWidget *button = widget->buttonWidget())
+        m_layout->addWidget(button, row, ButtonColumn);
+    setLabel(name, toolTip, row);
 
-    addToLayout(widget->displayName(), widget->toolTip(), widget, widget->buttonWidget());
     m_widgets.append(widget);
 }
 
@@ -248,16 +252,7 @@ void KitManagerConfigWidget::kitWasUpdated(Kit *k)
         discard();
 }
 
-void KitManagerConfigWidget::addToLayout(const QString &name, const QString &toolTip,
-                                         QWidget *widget, QWidget *button)
-{
-    int row = m_layout->rowCount();
-    addLabel(name, toolTip, row);
-    m_layout->addWidget(widget, row, WidgetColumn);
-    addButtonWidget(button, toolTip, row);
-}
-
-void KitManagerConfigWidget::addLabel(const QString &name, const QString &toolTip, int row)
+void KitManagerConfigWidget::setLabel(const QString &name, const QString &toolTip, int row)
 {
     static const Qt::Alignment alignment
         = static_cast<Qt::Alignment>(style()->styleHint(QStyle::SH_FormLayoutLabelAlignment));
@@ -266,13 +261,12 @@ void KitManagerConfigWidget::addLabel(const QString &name, const QString &toolTi
     m_layout->addWidget(label, row, LabelColumn, alignment);
 }
 
-void KitManagerConfigWidget::addButtonWidget(QWidget *button, const QString &toolTip, int row)
+void KitManagerConfigWidget::paintEvent(QPaintEvent *)
 {
-    if (!button)
-        return;
-    if (button->toolTip().isEmpty())
-        button->setToolTip(toolTip);
-    m_layout->addWidget(button, row, ButtonColumn);
+    QPainter p(this);
+    if (m_background.size() != size())
+        m_background = Utils::DetailsWidget::createBackground(size(), 0, this);
+    p.drawPixmap(rect(), m_background);
 }
 
 } // namespace Internal
diff --git a/src/plugins/projectexplorer/kitmanagerconfigwidget.h b/src/plugins/projectexplorer/kitmanagerconfigwidget.h
index e10a82ea8bbcdba73eeb3083443b4cf0dce263f7..8c969aa6cfec817d079b348b8c0df5fd3a61aa04 100644
--- a/src/plugins/projectexplorer/kitmanagerconfigwidget.h
+++ b/src/plugins/projectexplorer/kitmanagerconfigwidget.h
@@ -32,8 +32,9 @@
 
 #include "kitconfigwidget.h"
 
+#include <QWidget>
+
 QT_BEGIN_NAMESPACE
-class QHBoxLayout;
 class QGridLayout;
 class QLineEdit;
 class QToolButton;
@@ -49,7 +50,7 @@ class KitManagerConfigWidget : public QWidget
     Q_OBJECT
 
 public:
-    explicit KitManagerConfigWidget(Kit *k, QWidget *parent = 0);
+    explicit KitManagerConfigWidget(Kit *k);
     ~KitManagerConfigWidget();
 
     QString displayName() const;
@@ -68,8 +69,6 @@ public:
     bool isDefaultKit() const;
     void removeKit();
 
-public slots:
-
 signals:
     void dirty();
 
@@ -86,11 +85,8 @@ private:
         ButtonColumn
     };
 
-    void addToLayout(const QString &name, const QString &toolTip, QWidget *widget, QWidget *button = 0);
-
-
-    void addLabel(const QString &name, const QString &toolTip, int row);
-    void addButtonWidget(QWidget *button, const QString &toolTip, int row);
+    void setLabel(const QString &name, const QString &toolTip, int row);
+    void paintEvent(QPaintEvent *ev);
 
     QGridLayout *m_layout;
     QToolButton *m_iconButton;
@@ -100,6 +96,7 @@ private:
     Kit *m_modifiedKit;
     bool m_isDefaultKit;
     bool m_fixingKit;
+    QPixmap m_background;
 };
 
 } // namespace Internal
diff --git a/src/plugins/projectexplorer/kitmodel.cpp b/src/plugins/projectexplorer/kitmodel.cpp
index e8ef833b8dcecd9853820330a40515e56a6a5811..e46e090749fac47072a784275296fd1f2d8500e7 100644
--- a/src/plugins/projectexplorer/kitmodel.cpp
+++ b/src/plugins/projectexplorer/kitmodel.cpp
@@ -368,8 +368,7 @@ KitNode *KitModel::findWorkingCopy(Kit *k) const
 KitNode *KitModel::createNode(KitNode *parent, Kit *k)
 {
     KitNode *node = new KitNode(parent, k);
-    node->widget->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding);
-    m_parentLayout->addWidget(node->widget, 2);
+    m_parentLayout->addWidget(node->widget);
     connect(node->widget, SIGNAL(dirty()), this, SLOT(setDirty()));
     return node;
 }
diff --git a/src/plugins/projectexplorer/kitoptionspage.cpp b/src/plugins/projectexplorer/kitoptionspage.cpp
index 8cb764e8d8af29ec0e7f8019d0a64d4a9d8f7ad3..80da1894e53fc0e63ba6c068ace351a71c33d002 100644
--- a/src/plugins/projectexplorer/kitoptionspage.cpp
+++ b/src/plugins/projectexplorer/kitoptionspage.cpp
@@ -85,7 +85,7 @@ QWidget *KitOptionsPage::createPage(QWidget *parent)
     buttonLayout->addWidget(m_cloneButton);
     buttonLayout->addWidget(m_delButton);
     buttonLayout->addWidget(m_makeDefaultButton);
-    buttonLayout->addItem(new QSpacerItem(0, 0, QSizePolicy::Minimum, QSizePolicy::Expanding));
+    buttonLayout->addStretch();
 
     QHBoxLayout *horizontalLayout = new QHBoxLayout();
     horizontalLayout->addWidget(m_kitsView);
@@ -93,11 +93,12 @@ QWidget *KitOptionsPage::createPage(QWidget *parent)
 
     QVBoxLayout *verticalLayout = new QVBoxLayout(m_configWidget);
     verticalLayout->addLayout(horizontalLayout);
-    verticalLayout->setStretch(0, 1);
 
     Q_ASSERT(!m_model);
     m_model = new Internal::KitModel(verticalLayout);
     connect(m_model, SIGNAL(kitStateChanged()), this, SLOT(updateState()));
+    verticalLayout->setStretch(0, 1);
+    verticalLayout->setStretch(1, 0);
 
     m_kitsView->setModel(m_model);
     m_kitsView->header()->setResizeMode(0, QHeaderView::Stretch);
diff --git a/src/plugins/projectexplorer/kitoptionspage.h b/src/plugins/projectexplorer/kitoptionspage.h
index 0e72e8cd55d02e372357fdbda5cb7857afe3a60c..6b1a4a4c8b82281c7572d4f7da21b016cdc9e6a8 100644
--- a/src/plugins/projectexplorer/kitoptionspage.h
+++ b/src/plugins/projectexplorer/kitoptionspage.h
@@ -47,9 +47,6 @@ namespace ProjectExplorer {
 namespace Internal { class KitModel; }
 
 class Kit;
-class KitConfigWidget;
-class KitFactory;
-class KitManager;
 
 // --------------------------------------------------------------------------
 // KitOptionsPage:
diff --git a/src/plugins/qt4projectmanager/qmakekitconfigwidget.cpp b/src/plugins/qt4projectmanager/qmakekitconfigwidget.cpp
index d5546f90b1ac715e2b365fee794a84b73b35c5fb..062bda9c61301e267994ef4408af3ca3281d63a3 100644
--- a/src/plugins/qt4projectmanager/qmakekitconfigwidget.cpp
+++ b/src/plugins/qt4projectmanager/qmakekitconfigwidget.cpp
@@ -35,34 +35,35 @@
 #include <coreplugin/icore.h>
 #include <projectexplorer/projectexplorerconstants.h>
 
-#include <QHBoxLayout>
 #include <QLineEdit>
 
 namespace Qt4ProjectManager {
 namespace Internal {
 
-QmakeKitConfigWidget::QmakeKitConfigWidget(ProjectExplorer::Kit *k, QWidget *parent) :
-    ProjectExplorer::KitConfigWidget(parent),
-    m_kit(k),
+QmakeKitConfigWidget::QmakeKitConfigWidget(ProjectExplorer::Kit *k) :
+    ProjectExplorer::KitConfigWidget(k),
     m_lineEdit(new QLineEdit)
 {
-    setToolTip(tr("The mkspec to use when building the project with qmake.<br>"
-                  "This setting is ignored when using other build systems."));
-    QHBoxLayout *layout = new QHBoxLayout(this);
-    layout->setMargin(0);
-
-    m_lineEdit->setContentsMargins(0, 0, 0, 0);
-    layout->addWidget(m_lineEdit);
-
     refresh(); // set up everything according to kit
     connect(m_lineEdit, SIGNAL(textEdited(QString)), this, SLOT(mkspecWasChanged(QString)));
 }
 
+QWidget *QmakeKitConfigWidget::mainWidget() const
+{
+    return m_lineEdit;
+}
+
 QString QmakeKitConfigWidget::displayName() const
 {
     return tr("Qt mkspec:");
 }
 
+QString QmakeKitConfigWidget::toolTip() const
+{
+    return tr("The mkspec to use when building the project with qmake.<br>"
+              "This setting is ignored when using other build systems.");
+}
+
 void QmakeKitConfigWidget::makeReadOnly()
 {
     m_lineEdit->setEnabled(false);
diff --git a/src/plugins/qt4projectmanager/qmakekitconfigwidget.h b/src/plugins/qt4projectmanager/qmakekitconfigwidget.h
index 0f2f9227e3897374bbfa0ec521824b0b9211f21d..af69f4ef03c3cf7fd84478394cb2515f2b8ddff0 100644
--- a/src/plugins/qt4projectmanager/qmakekitconfigwidget.h
+++ b/src/plugins/qt4projectmanager/qmakekitconfigwidget.h
@@ -32,13 +32,11 @@
 
 #include <projectexplorer/kitconfigwidget.h>
 
-QT_FORWARD_DECLARE_CLASS(QLineEdit)
-
-namespace ProjectExplorer { class Kit; }
+QT_BEGIN_NAMESPACE
+class QLineEdit;
+QT_END_NAMESPACE
 
 namespace Qt4ProjectManager {
-class BaseQtVersion;
-
 namespace Internal {
 
 class QmakeKitConfigWidget : public ProjectExplorer::KitConfigWidget
@@ -46,12 +44,13 @@ class QmakeKitConfigWidget : public ProjectExplorer::KitConfigWidget
     Q_OBJECT
 
 public:
-    explicit QmakeKitConfigWidget(ProjectExplorer::Kit *k, QWidget *parent = 0);
+    explicit QmakeKitConfigWidget(ProjectExplorer::Kit *k);
 
+    QWidget *mainWidget() const;
     QString displayName() const;
+    QString toolTip() const;
 
     void makeReadOnly();
-
     void refresh();
 
 private slots:
@@ -60,7 +59,6 @@ private slots:
 private:
     int findQtVersion(const int id) const;
 
-    ProjectExplorer::Kit *m_kit;
     QLineEdit *m_lineEdit;
 };
 
diff --git a/src/plugins/qtsupport/qtkitconfigwidget.cpp b/src/plugins/qtsupport/qtkitconfigwidget.cpp
index 64b02115b7295b90d7c38d739e594388b3ef23c0..c5a3fb033a0ee8e71d53e7b384f56800baef921d 100644
--- a/src/plugins/qtsupport/qtkitconfigwidget.cpp
+++ b/src/plugins/qtsupport/qtkitconfigwidget.cpp
@@ -45,34 +45,21 @@
 namespace QtSupport {
 namespace Internal {
 
-QtKitConfigWidget::QtKitConfigWidget(ProjectExplorer::Kit *k, QWidget *parent) :
-    ProjectExplorer::KitConfigWidget(parent),
-    m_kit(k),
-    m_combo(new QComboBox),
-    m_manageButton(new QPushButton(this))
+QtKitConfigWidget::QtKitConfigWidget(ProjectExplorer::Kit *k) :
+    KitConfigWidget(k)
 {
-    setToolTip(tr("The Qt library to use for all projects using this kit.<br>"
-                  "A Qt version is required for qmake-based projects and optional when using other build systems."));
-    QHBoxLayout *layout = new QHBoxLayout(this);
-    layout->setMargin(0);
-
-    m_combo->setContentsMargins(0, 0, 0, 0);
-    m_combo->setSizePolicy(QSizePolicy::MinimumExpanding, QSizePolicy::Fixed);
-    layout->addWidget(m_combo);
-
-    m_manageButton->setContentsMargins(0, 0, 0, 0);
-    m_manageButton->setText(tr("Manage..."));
+    m_combo = new QComboBox;
+    m_combo->addItem(tr("None"), -1);
 
     QtVersionManager *mgr = QtVersionManager::instance();
-
-    // initially populate combobox:
-    m_combo->addItem(tr("None"), -1);
     QList<BaseQtVersion *> versions = mgr->validVersions();
     QList<int> versionIds;
     foreach (BaseQtVersion *v, versions)
         versionIds.append(v->uniqueId());
     versionsChanged(versionIds, QList<int>(), QList<int>());
 
+    m_manageButton = new QPushButton(tr("Manage..."));
+
     refresh();
     connect(m_combo, SIGNAL(currentIndexChanged(int)), this, SLOT(currentWasChanged(int)));
 
@@ -87,6 +74,13 @@ QString QtKitConfigWidget::displayName() const
     return tr("Qt version:");
 }
 
+QString QtKitConfigWidget::toolTip() const
+{
+    return tr("The Qt library to use for all projects using this kit.<br>"
+              "A Qt version is required for qmake-based projects "
+              "and optional when using other build systems.");
+}
+
 void QtKitConfigWidget::makeReadOnly()
 {
     m_combo->setEnabled(false);
@@ -97,6 +91,11 @@ void QtKitConfigWidget::refresh()
     m_combo->setCurrentIndex(findQtVersion(QtKitInformation::qtVersionId(m_kit)));
 }
 
+QWidget *QtKitConfigWidget::mainWidget() const
+{
+    return m_combo;
+}
+
 QWidget *QtKitConfigWidget::buttonWidget() const
 {
     return m_manageButton;
diff --git a/src/plugins/qtsupport/qtkitconfigwidget.h b/src/plugins/qtsupport/qtkitconfigwidget.h
index 0ee01d683863cb9967cde38509733d9b436ef627..d163998df7b82dd23319a867f7651d277f0878fa 100644
--- a/src/plugins/qtsupport/qtkitconfigwidget.h
+++ b/src/plugins/qtsupport/qtkitconfigwidget.h
@@ -32,14 +32,12 @@
 
 #include <projectexplorer/kitconfigwidget.h>
 
-QT_FORWARD_DECLARE_CLASS(QComboBox)
-QT_FORWARD_DECLARE_CLASS(QPushButton)
-
-namespace ProjectExplorer { class Kit; }
+QT_BEGIN_NAMESPACE
+class QComboBox;
+class QPushButton;
+QT_END_NAMESPACE
 
 namespace QtSupport {
-class BaseQtVersion;
-
 namespace Internal {
 
 class QtKitConfigWidget : public ProjectExplorer::KitConfigWidget
@@ -47,14 +45,16 @@ class QtKitConfigWidget : public ProjectExplorer::KitConfigWidget
     Q_OBJECT
 
 public:
-    explicit QtKitConfigWidget(ProjectExplorer::Kit *k, QWidget *parent = 0);
+    explicit QtKitConfigWidget(ProjectExplorer::Kit *k);
 
     QString displayName() const;
 
     void makeReadOnly();
 
     void refresh();
+    QWidget *mainWidget() const;
     QWidget *buttonWidget() const;
+    QString toolTip() const;
 
 private slots:
     void versionsChanged(const QList<int> &added, const QList<int> &removed, const QList<int> &changed);
@@ -64,7 +64,6 @@ private slots:
 private:
     int findQtVersion(const int id) const;
 
-    ProjectExplorer::Kit *m_kit;
     QComboBox *m_combo;
     QPushButton *m_manageButton;
 };