diff --git a/GUI/coregui/Views/Components/SampleEditor/DesignerMimeData.cpp b/GUI/coregui/Views/Components/SampleEditor/DesignerMimeData.cpp
index dbfa2d357855d808588231ffadd00921e0468d61..e02dfe52aa9c6797e1aeb9fcb3eb59a682c5444f 100644
--- a/GUI/coregui/Views/Components/SampleEditor/DesignerMimeData.cpp
+++ b/GUI/coregui/Views/Components/SampleEditor/DesignerMimeData.cpp
@@ -24,7 +24,6 @@ DesignerMimeData::DesignerMimeData(const QString &entryname, const QString &xmld
     QByteArray itemData;
     QDataStream dataStream(&itemData, QIODevice::WriteOnly);
     dataStream << xmldescr;
-    //setData("bornagain/"+m_classname, itemData);
     setData("bornagain/widget", itemData);
 
     drag->setPixmap(getPixmap(m_classname));
diff --git a/GUI/coregui/Views/Components/SampleEditor/DesignerMimeData.h b/GUI/coregui/Views/Components/SampleEditor/DesignerMimeData.h
index 74855445ab5fc9a758785df894f6e937de40964a..2acabd719d92f23aae5284800dfd70cf14f16daf 100644
--- a/GUI/coregui/Views/Components/SampleEditor/DesignerMimeData.h
+++ b/GUI/coregui/Views/Components/SampleEditor/DesignerMimeData.h
@@ -27,6 +27,7 @@ private:
     QString m_entryname;
     QString m_xmldescr;
     QString m_classname;
+
 };
 
 #endif // DESIGNERMIMEDATA_H
diff --git a/GUI/coregui/Views/Components/SampleEditor/DesignerScene.cpp b/GUI/coregui/Views/Components/SampleEditor/DesignerScene.cpp
index 8e2577288258d7b919b7f22e6b793a55953421d6..9769b641fa5890513c1c6d09cb4e511bbe907248 100644
--- a/GUI/coregui/Views/Components/SampleEditor/DesignerScene.cpp
+++ b/GUI/coregui/Views/Components/SampleEditor/DesignerScene.cpp
@@ -38,7 +38,7 @@ void DesignerScene::createLayerDock()
 {
     MultiLayerView *ml = new MultiLayerView();
     ml->setColor(Qt::lightGray);
-    ml->allowDropType(QString("MultiLayerX"));
+    ml->allowDropType(QString("MultiLayer"));
     ml->addLayer(new LayerView());
     ml->addLayer(new LayerView());
     ml->setToolTip(QString("LayerDock"));
diff --git a/GUI/coregui/Views/Components/SampleEditor/LayerView.cpp b/GUI/coregui/Views/Components/SampleEditor/LayerView.cpp
index d1d4a2c05df66e410821e1e656240c38f4e6b561..b5558f0c772139082600b00457c98fc1050172c7 100644
--- a/GUI/coregui/Views/Components/SampleEditor/LayerView.cpp
+++ b/GUI/coregui/Views/Components/SampleEditor/LayerView.cpp
@@ -98,12 +98,12 @@ void LayerView::dragMoveEvent(QGraphicsSceneDragDropEvent *event)
 }
 
 
-//QVariant LayerView::itemChange(GraphicsItemChange change, const QVariant &value)
-// {
-//     if (change == ItemPositionChange && scene()) {
-//         //std::cout << "YYY itemChange " << x() << " " << y() <<  std::endl;
-//         // value is the new position.
-//         QPointF newPos = value.toPointF();
+QVariant LayerView::itemChange(GraphicsItemChange change, const QVariant &value)
+{
+    std::cout << "YYY itemChange " << x() << " " << y() <<  std::endl;
+     if (change == ItemPositionChange && scene()) {
+         // value is the new position.
+         QPointF newPos = value.toPointF();
 //         QRectF rect = parentItem()->boundingRect();
 //         //std::cout << "rect " << rect.x() << " " << rect.y() << " " << rect.width() << " " << rect.height() << std::endl;
 //         rect.setY(rect.y() - boundingRect().height()/2.);
@@ -113,62 +113,10 @@ void LayerView::dragMoveEvent(QGraphicsSceneDragDropEvent *event)
 //             // Keep the item inside the scene rect.
 //             newPos.setY(qMin(rect.bottom(), qMax(newPos.y(), rect.top())));
 //         }
-//         newPos.setX(m_fixed_xpos);
-//         return newPos;
-//     }
-//     return QGraphicsItem::itemChange(change, value);
-// }
-
-
-//void ParticleView::mouseMoveEvent(QGraphicsSceneMouseEvent *event)
-//{
-//    if (QLineF(event->screenPos(), event->buttonDownScreenPos(Qt::LeftButton))
-//        .length() < QApplication::startDragDistance()) {
-//        return;
-//    }
-
-//    QDrag *drag = new QDrag(event->widget());
-//    QMimeData *mime = new QMimeData;
-//    drag->setMimeData(mime);
-
-//    static int n = 0;
-//    if (n++ > 2 && (qrand() % 3) == 0) {
-//        QImage image(":/images/head.png");
-//        mime->setImageData(image);
-
-//        drag->setPixmap(QPixmap::fromImage(image).scaled(30, 40));
-//        drag->setHotSpot(QPoint(15, 30));
-
-//    } else {
-//        mime->setColorData(color);
-//        mime->setText(QString("#%1%2%3")
-//                      .arg(color.red(), 2, 16, QLatin1Char('0'))
-//                      .arg(color.green(), 2, 16, QLatin1Char('0'))
-//                      .arg(color.blue(), 2, 16, QLatin1Char('0')));
-
-//        QPixmap pixmap(34, 34);
-//        pixmap.fill(Qt::white);
-
-//        QPainter painter(&pixmap);
-//        painter.translate(15, 15);
-//        painter.setRenderHint(QPainter::Antialiasing);
-//        paint(&painter, 0, 0);
-//        painter.end();
-
-//        pixmap.setMask(pixmap.createHeuristicMask());
-
-//        drag->setPixmap(pixmap);
-//        drag->setHotSpot(QPoint(15, 20));
-//    }
-
-//    drag->exec();
-//    setCursor(Qt::OpenHandCursor);
-//}
-
-
-//void ParticleView::mouseReleaseEvent(QGraphicsSceneMouseEvent *)
-//{
-//    setCursor(Qt::OpenHandCursor);
-//}
+         newPos.setX(m_fixed_xpos);
+         return newPos;
+     }
+     return QGraphicsItem::itemChange(change, value);
+ }
 
 
diff --git a/GUI/coregui/Views/Components/SampleEditor/LayerView.h b/GUI/coregui/Views/Components/SampleEditor/LayerView.h
index e4bc05fdb1a2449764832a898ac1c84234bfd776..d49dc64634a2b3e130dd824dfa845586416a0139 100644
--- a/GUI/coregui/Views/Components/SampleEditor/LayerView.h
+++ b/GUI/coregui/Views/Components/SampleEditor/LayerView.h
@@ -24,22 +24,23 @@ public:
     QRect rect() const { return m_rect; }
 
     void setFixedX() { m_fixed_xpos = x(); }
+    qreal getFixedX() { return m_fixed_xpos; }
 
 Q_SIGNALS:
     void LayerMoved();
 
 
 protected:
-    void mouseMoveEvent(QGraphicsSceneMouseEvent *event);
-    void mouseReleaseEvent(QGraphicsSceneMouseEvent *event);
-    void mousePressEvent(QGraphicsSceneMouseEvent *event);
+    virtual void mouseMoveEvent(QGraphicsSceneMouseEvent *event);
+    virtual void mouseReleaseEvent(QGraphicsSceneMouseEvent *event);
+    virtual void mousePressEvent(QGraphicsSceneMouseEvent *event);
 
-//    QVariant itemChange(GraphicsItemChange change, const QVariant &value);
+    QVariant itemChange(GraphicsItemChange change, const QVariant &value);
 
-    void dragEnterEvent(QGraphicsSceneDragDropEvent *event);
-    void dragLeaveEvent(QGraphicsSceneDragDropEvent *event);
-    void dropEvent(QGraphicsSceneDragDropEvent *event);
-    void dragMoveEvent(QGraphicsSceneDragDropEvent *event);
+    virtual void dragEnterEvent(QGraphicsSceneDragDropEvent *event);
+    virtual void dragLeaveEvent(QGraphicsSceneDragDropEvent *event);
+    virtual void dropEvent(QGraphicsSceneDragDropEvent *event);
+    virtual void dragMoveEvent(QGraphicsSceneDragDropEvent *event);
 
 private:
     QColor m_color;
diff --git a/GUI/coregui/Views/Components/SampleEditor/MultiLayerView.cpp b/GUI/coregui/Views/Components/SampleEditor/MultiLayerView.cpp
index 1216f9a3ee7904e620f13acbaeba2e5edd3ba759..7e58d7d85a5b8fc41abc4b5b06397fe44a43d8de 100644
--- a/GUI/coregui/Views/Components/SampleEditor/MultiLayerView.cpp
+++ b/GUI/coregui/Views/Components/SampleEditor/MultiLayerView.cpp
@@ -21,7 +21,7 @@
 
 
 MultiLayerView::MultiLayerView(QGraphicsItem *parent)
-    : ISampleView(parent)
+    : LayerView(parent)
     , m_color(Qt::blue)
     , m_rect(0, 0, DesignerHelper::getMultiLayerWidth(), DesignerHelper::getMultiLayerHeight())
 {
@@ -61,14 +61,17 @@ void MultiLayerView::allowDropType(const QString &name) {
 
 void MultiLayerView::addLayer(LayerView *layer, QPointF pos)
 {
+    std::cout << "MultiLayerView::addLayer" << std::endl;
     // adjusting main rectangle othervise item->setPos will not work due to 'LayerView::itemChange'
     m_rect.setHeight(m_rect.height()+layer->boundingRect().height());
 
-    int xpos = (DesignerHelper::getMultiLayerWidth() - DesignerHelper::getLayerWidth())/2.;
+    int xpos = (DesignerHelper::getMultiLayerWidth() - layer->boundingRect().width())/2.;
     layer->setPos(xpos, pos.y());
     layer->setFixedX();
     connect(layer, SIGNAL(LayerMoved()), this, SLOT(updateHeight()) );
+    connect(layer, SIGNAL(heightChanged()), this, SLOT(updateHeight()) );
     layer->setParentItem(this);
+    //emit heightChanged();
 }
 
 
@@ -99,6 +102,7 @@ void MultiLayerView::updateHeight()
 
     m_rect.setHeight(total_height);
     update();
+    emit heightChanged();
 }
 
 
@@ -127,7 +131,7 @@ QRectF MultiLayerView::boundingRect() const
 void MultiLayerView::paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget)
 {
     Q_UNUSED(widget);
-    painter->setPen(Qt::blue);
+    painter->setPen(m_color);
     if (option->state & (QStyle::State_Selected | QStyle::State_HasFocus)) {
         painter->setPen(Qt::DashLine);
     }
@@ -154,10 +158,20 @@ void MultiLayerView::dragLeaveEvent(QGraphicsSceneDragDropEvent *event)
 
 void MultiLayerView::dropEvent(QGraphicsSceneDragDropEvent *event)
 {
+    std::cout << "MultiLayerView::dropEvent() -> " << std::endl;
+
     const DesignerMimeData *mimeData = checkDragEvent(event);
     if (mimeData) {
-        addLayer(new LayerView(), event->pos());
-        update();
+        LayerView *layer(0);
+        if(mimeData->getClassName() == QString("Layer") ) layer = new LayerView();
+        if(mimeData->getClassName() == QString("MultiLayer") ) layer = new MultiLayerView();
+        if(layer){
+            std::cout << "MultiLayerView::dropEvent() -> adding layer or multilayer" << std::endl;
+            addLayer(layer, event->pos());
+            update();
+        } else {
+            std::cout << "MultiLayerView::dropEvent() -> Error. Can't create object " << mimeData->getClassName().toStdString() << std::endl;
+        }
     }
 }
 
@@ -173,40 +187,23 @@ void MultiLayerView::dragMoveEvent(QGraphicsSceneDragDropEvent *event)
 }
 
 
-void MultiLayerView::mouseMoveEvent(QGraphicsSceneMouseEvent *event)
-{
-    std::cout << "MultiLayerView::mouseMoveEvent -> " << x() << " " << y() << std::endl;
-    QGraphicsObject::mouseMoveEvent(event);
-}
-
-
-void MultiLayerView::mousePressEvent(QGraphicsSceneMouseEvent *event)
-{
-    std::cout << "MultiLayerView::mousePressEvent -> " << x() << " " << y() << std::endl;
-    QGraphicsObject::mousePressEvent(event);
-}
+//void MultiLayerView::mouseMoveEvent(QGraphicsSceneMouseEvent *event)
+//{
+//    std::cout << "MultiLayerView::mouseMoveEvent -> " << x() << " " << y() << std::endl;
+//    QGraphicsObject::mouseMoveEvent(event);
+//}
 
-void MultiLayerView::mouseReleaseEvent(QGraphicsSceneMouseEvent *event)
-{
-    std::cout << "MultiLayerView::mouseReleaseEvent -> " << x() << " " << y() << std::endl;
-    QGraphicsObject::mouseReleaseEvent(event);
-}
 
+//void MultiLayerView::mousePressEvent(QGraphicsSceneMouseEvent *event)
+//{
+//    std::cout << "MultiLayerView::mousePressEvent -> " << x() << " " << y() << std::endl;
+//    QGraphicsObject::mousePressEvent(event);
+//}
 
-//const DesignerMimeData *MultiLayerView::checkDragEvent(QGraphicsSceneDragDropEvent * event)
+//void MultiLayerView::mouseReleaseEvent(QGraphicsSceneMouseEvent *event)
 //{
-//    const DesignerMimeData *mimeData = qobject_cast<const DesignerMimeData *>(event->mimeData());
-//    if (!mimeData) {
-//        event->ignore();
-//        return 0;
-//    }
-
-//    if(mimeData->hasFormat("widget/Layer")) {
-//        event->setAccepted(true);
-//    } else {
-//        event->setAccepted(false);
-//    }
-//    return mimeData;
+//    std::cout << "MultiLayerView::mouseReleaseEvent -> " << x() << " " << y() << std::endl;
+//    QGraphicsObject::mouseReleaseEvent(event);
 //}
 
 
diff --git a/GUI/coregui/Views/Components/SampleEditor/MultiLayerView.h b/GUI/coregui/Views/Components/SampleEditor/MultiLayerView.h
index fc17cf5e2e7394fb9a6138136a799203098cb7bd..95d743f89d67841cbb8af0051d9c34c626cb32fa 100644
--- a/GUI/coregui/Views/Components/SampleEditor/MultiLayerView.h
+++ b/GUI/coregui/Views/Components/SampleEditor/MultiLayerView.h
@@ -10,10 +10,14 @@
 #include "ISampleView.h"
 #include <QStringList>
 
+
 class LayerView;
 class DesignerMimeData;
 
-class MultiLayerView : public ISampleView
+#include "LayerView.h"
+
+//class MultiLayerView : public ISampleView
+class MultiLayerView : public LayerView
 {
     Q_OBJECT
 public:
@@ -42,9 +46,9 @@ protected:
     void dropEvent(QGraphicsSceneDragDropEvent *event);
     void dragMoveEvent(QGraphicsSceneDragDropEvent *event);
 
-    void mouseMoveEvent(QGraphicsSceneMouseEvent *event);
-    void mousePressEvent(QGraphicsSceneMouseEvent *event);
-    void mouseReleaseEvent(QGraphicsSceneMouseEvent *event);
+//    void mouseMoveEvent(QGraphicsSceneMouseEvent *event);
+//    void mousePressEvent(QGraphicsSceneMouseEvent *event);
+//    void mouseReleaseEvent(QGraphicsSceneMouseEvent *event);
 
     const DesignerMimeData *checkDragEvent(QGraphicsSceneDragDropEvent * event);
 
diff --git a/GUI/coregui/Views/Components/SampleEditor/SampleEditor.pri b/GUI/coregui/Views/Components/SampleEditor/SampleEditor.pri
index 9c0045902cc463e444259ba67d2b0cc684fb3a49..a746bd3d3a92a07557662bb82e4b55562e3b5b21 100644
--- a/GUI/coregui/Views/Components/SampleEditor/SampleEditor.pri
+++ b/GUI/coregui/Views/Components/SampleEditor/SampleEditor.pri
@@ -12,8 +12,7 @@ SOURCES +=  \
     Views/Components/SampleEditor/DesignerScene.cpp \
     Views/Components/SampleEditor/DesignerView.cpp \
     Views/Components/SampleEditor/ISampleView.cpp \
-    Views/Components/SampleEditor/DesignerWidgetFactory.cpp \
-    Views/Components/SampleEditor/LayerDockView.cpp
+    Views/Components/SampleEditor/DesignerWidgetFactory.cpp
 
 HEADERS +=  \
     Views/Components/SampleEditor/SampleEditor.h \
@@ -25,8 +24,7 @@ HEADERS +=  \
     Views/Components/SampleEditor/DesignerMimeData.h \
     Views/Components/SampleEditor/DesignerScene.h \
     Views/Components/SampleEditor/DesignerView.h \
-    Views/Components/SampleEditor/DesignerWidgetFactory.h \
-    Views/Components/SampleEditor/LayerDockView.h
+    Views/Components/SampleEditor/DesignerWidgetFactory.h
 
 RESOURCES += Views/Components/SampleEditor/SampleEditor.qrc