diff --git a/modules/gui/src/CMakeLists.txt b/modules/gui/src/CMakeLists.txt
index 16dcf4f6c32b3335a93b637797b230b456cfaf8f..d58e43808d8b7d4db0e6fa3a850ccbc90093a2dd 100644
--- a/modules/gui/src/CMakeLists.txt
+++ b/modules/gui/src/CMakeLists.txt
@@ -23,6 +23,7 @@ sequence_search_bar.hh
 set(OST_GUI_SEQUENCE_VIEW_HEADERS
 sequence_table_view.hh
 sequence_viewer.hh
+sequence_delegate.hh
 )
 
 set(OST_GUI_TOOLS_HEADERS
@@ -200,6 +201,7 @@ sequence_viewer/sequence_scene.cc
 sequence_viewer/sequence_search_bar.cc
 sequence/sequence_table_view.cc
 sequence/sequence_viewer.cc
+sequence/sequence_delegate.cc
 gosty_app.cc
 change_process_name.cc
 main_area.cc
@@ -318,6 +320,7 @@ sequence_viewer/sequence_scene.hh
 sequence_viewer/sequence_search_bar.hh
 sequence/sequence_table_view.hh
 sequence/sequence_viewer.hh
+sequence/sequence_delegate.hh
 plot_viewer/plot_axis_base.hh
 plot_viewer/plot_data_graphics_item_base.hh
 plot_viewer/plot_function_info.hh
diff --git a/modules/gui/src/sequence/sequence_table_view.cc b/modules/gui/src/sequence/sequence_table_view.cc
index 4ca7ff1318143bd30271022bd6a7cd00e601f308..087e1e8da404a841b7d095639b8cde8c796dd0d9 100644
--- a/modules/gui/src/sequence/sequence_table_view.cc
+++ b/modules/gui/src/sequence/sequence_table_view.cc
@@ -23,7 +23,9 @@
 
 #include <QHeaderView>
 #include <QScrollBar>
+#include <QTableWidgetItem>
 
+#include <iostream>
 #include "sequence_table_view.hh"
 
 namespace ost { namespace gui {
@@ -42,19 +44,59 @@ SequenceTableView::SequenceTableView(QAbstractItemModel * model)
   this->viewport()->stackUnder(column_not_move_);
 
   column_not_move_->setSelectionModel(this->selectionModel());
-  for(int col=1; col<this->model()->columnCount(); col++)
+  for(int col=1; col<this->model()->columnCount(); col++){
    column_not_move_->setColumnHidden(col, true);
+  }
 
   column_not_move_->setColumnWidth(0, this->columnWidth(0) );
 
   column_not_move_->setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOff);
   column_not_move_->setVerticalScrollBarPolicy(Qt::ScrollBarAlwaysOff);
   column_not_move_->show();
+  column_not_move_->setStyleSheet("QTableView { border: 0px;"
+                                 "background-color: #8EDE21;"
+                                 "selection-background-color: #999}"
+                                 "QTableView::item{ border: none;"
+                                 "padding: 0px; border-width: 0px; margin: 0px;}");
+  column_not_move_->setShowGrid(false);
+
+  column_not_move_->horizontalHeader()->setStyleSheet(
+      "QHeaderView::section {"
+         "padding-bottom: 0px;"
+         "padding-top: 0px;"
+         "padding-left: 0px;"
+         "padding-right: 0px;"
+         "margin: 0px;"
+      "}"
+    );
+
+  this->setStyleSheet("QTableView {"
+      "show-decoration-selected: 1;"
+  "}"
+  "QTableView::item {"
+       "border: 1px solid #d9d9d9;"
+      "border-left-color: transparent;"
+      "border-right-color: transparent;"
+  "}"
+  "QTableView::item:hover {"
+      "background: qlineargradient(x1: 0, y1: 0, x2: 0, y2: 1, stop: 0 #e7effd, stop: 1 #cbdaf1);"
+      "border: 1px solid #bfcde4;"
+  "}"
+  "QTableView::item:selected {"
+      "border: 1px solid #567dbc;"
+  "}"
+  "QTableView::item:selected:active{"
+      "background: qlineargradient(x1: 0, y1: 0, x2: 0, y2: 1, stop: 0 #6ea1f1, stop: 1 #567dbc);"
+  "}"
+  "QTableView::item:selected:!active {"
+      "background: qlineargradient(x1: 0, y1: 0, x2: 0, y2: 1, stop: 0 #6b9be8, stop: 1 #577fbf);"
+  "}");
+  this->setShowGrid(false);
 
   this->updateNotMoveColumn();
 
-  setHorizontalScrollMode(ScrollPerPixel);
-  setVerticalScrollMode(ScrollPerPixel);
+  this->setHorizontalScrollMode(ScrollPerPixel);
+  this->setVerticalScrollMode(ScrollPerPixel);
   column_not_move_->setVerticalScrollMode(ScrollPerPixel);
 
   connect(this->horizontalHeader(),SIGNAL(sectionResized(int,int,int)), this, SLOT(ResizeWidth(int,int,int)));
@@ -110,6 +152,20 @@ void SequenceTableView::updateNotMoveColumn()
   column_not_move_->setGeometry(x,y,w,h);
 }
 
+void SequenceTableView::columnCountChanged(const QModelIndex& index, int old_count, int new_count){
+  if(old_count > 1 && old_count <= new_count){
+    for(int col=old_count-1; col<this->model()->columnCount(); col++){
+      column_not_move_->setColumnHidden(col, true);
+    }
+  }
+}
+
+void SequenceTableView::resizeColumnsToContents(){
+  QTableView::resizeColumnsToContents();
+  column_not_move_->setColumnWidth(0,this->columnWidth(0));
+  updateNotMoveColumn();
+}
+
 SequenceTableView::~SequenceTableView(){}
 
 }}
diff --git a/modules/gui/src/sequence/sequence_table_view.hh b/modules/gui/src/sequence/sequence_table_view.hh
index 9b2c725189bee696f96ad78dddbb0e24a422ee45..9b873c40a64b5eaf98de1d08b8eb1e0aec4743c2 100644
--- a/modules/gui/src/sequence/sequence_table_view.hh
+++ b/modules/gui/src/sequence/sequence_table_view.hh
@@ -36,6 +36,10 @@ public:
   SequenceTableView(QAbstractItemModel * model);
   ~SequenceTableView();
 
+public slots:
+  void columnCountChanged(const QModelIndex& index, int old_count, int new_count);
+  void resizeColumnsToContents();
+
 protected:
   virtual void resizeEvent(QResizeEvent *event);
   virtual QModelIndex moveCursor(CursorAction cursorAction, Qt::KeyboardModifiers modifiers);
diff --git a/modules/gui/src/sequence/sequence_viewer.cc b/modules/gui/src/sequence/sequence_viewer.cc
index 0c0f1a09579f45accefd493e0d313c28e975917f..97aabad301ca60737f09cf2c00aafad9a3de6cc2 100644
--- a/modules/gui/src/sequence/sequence_viewer.cc
+++ b/modules/gui/src/sequence/sequence_viewer.cc
@@ -20,34 +20,112 @@
 /*
   Author: Stefan Scheuber
  */
+#include <boost/pointer_cast.hpp>
 
 #include <QStandardItem>
 #include <QVBoxLayout>
+#include <QPushButton>
+#include <QHeaderView>
+
+#include <ost/mol/chain_view.hh>
+#include <ost/mol/entity_view.hh>
+
+#include <ost/seq/sequence_handle.hh>
+
+#include <ost/gfx/entity.hh>
+#include <ost/gfx/entity_fw.hh>
 
 #include "sequence_viewer.hh"
 
-#include "sequence_table_view.hh"
+#include "sequence_delegate.hh"
+
 namespace ost { namespace gui {
 
 
 SequenceViewerV2::SequenceViewerV2(QWidget* parent): Widget(NULL,parent)
 {
+  gfx::Scene::Instance().AttachObserver(this);
   QStandardItemModel* model=new QStandardItemModel();
 
-  QStandardItem* item = new QStandardItem("Best protein the world has ever seen");
-  model->setItem(0, 0, item);
-  item = new QStandardItem("slakdjjjjjjjjjjjjjjjjjjjjjjjjlakskdjaksdjaksldjalsdjaklsdjalskdjaskdjaksdjaksdjkasjdkasjdklasdjladjkdjfhjksgb,myxcnaiosjh3iklrjakslfjka");
-  model->setItem(0, 1, item);
-  item = new QStandardItem("Worst protein the world has ever seen");
-  model->setItem(1, 0, item);
-  item = new QStandardItem("slakdjjjjjjjjjjjjjjjjjjjjjjjjlakskdjaksdjaksldjalsdjaklsdjalskdjaskdjaksdjaksdjkasjdkasjdklasdjladjkdjfhjksgb,myxcnaiosjh3iklrjakslfjkb");
-  model->setItem(1, 1, item);
-
   QVBoxLayout* layout = new QVBoxLayout(this);
+
   seq_table_view_ = new SequenceTableView(model);
   layout->addWidget(seq_table_view_);
-
+  //seq_table_view_->setItemDelegateForColumn(2,new SequenceDelegate(seq_table_view_));
   this->setLayout(layout);
+  connect(model,SIGNAL(columnsInserted(const QModelIndex&, int, int)),seq_table_view_,SLOT(columnCountChanged(const QModelIndex&, int, int)));
+  //QPushButton* pb = new QPushButton("BLABLA");
+  //seq_table_view_->setIndexWidget(model->index(0,2),pb);
+  seq_table_view_->verticalHeader()->hide();
+  seq_table_view_->horizontalHeader()->setStyleSheet(
+      "QHeaderView::section {"
+         "padding-bottom: 0px;"
+         "padding-top: 0px;"
+         "padding-left: 0px;"
+         "padding-right: 0px;"
+         "margin: 0px;"
+      "}"
+    );
+}
+
+void SequenceViewerV2::NodeAdded(const gfx::GfxNodeP& n)
+{
+  if (gfx::EntityP o=boost::dynamic_pointer_cast<gfx::Entity>(n)) {
+    // extract all chains
+    mol::EntityView v=o->GetView();
+    for (mol::ChainViewList::const_iterator c=v.GetChainList().begin(),
+         e1=v.GetChainList().end(); c!=e1; ++c) {
+      mol::ChainView chain=*c;
+      String seq_str;
+      seq_str.reserve(chain.GetResidueCount());
+      for (mol::ResidueViewList::const_iterator r=chain.GetResidueList().begin(),
+           e2=chain.GetResidueList().end(); r!=e2; ++r) {
+        mol::ResidueView res=*r;
+        seq_str.append(1, res.GetOneLetterCode());
+      }
+      if (seq_str.empty()) {
+        continue;
+      }
+      String name=o->GetName();
+      if (chain.GetName()!="" && chain.GetName()!=" ") {
+        name+=" ("+chain.GetName()+")";
+      }
+      seq::SequenceHandle seq=seq::CreateSequence(name, seq_str);
+      mol::EntityView v_one_chain=v.GetHandle().CreateEmptyView();
+      v_one_chain.AddChain(chain, mol::ViewAddFlag::INCLUDE_ALL);
+      seq.AttachView(v_one_chain);
+      //SequenceItem* item=new SequenceItem(seq);
+      //connect(item, SIGNAL(SelectionChanged(SequenceItem*)),
+      //        this, SLOT(ItemSelectionChanged(SequenceItem*)));
+      //this->AddSequence(item);
+      //obj_map_.insert(std::make_pair(item, o));
+
+      QStandardItem* item = new QStandardItem(name.c_str());
+      QStandardItemModel* model = qobject_cast<QStandardItemModel*>(seq_table_view_->model());
+      if(model){
+        int row = model->rowCount();
+        model->setHeaderData(0, Qt::Horizontal, QObject::tr("") );
+        model->setHeaderData(row, Qt::Vertical, QObject::tr("") );
+        model->setItem(row, 0, item);
+        for(int i = 0; i< seq.GetLength(); i++){
+          item = new QStandardItem(QString(seq.GetOneLetterCode(i)));
+          item->setTextAlignment(Qt::AlignCenter);
+          item->setFont(QFont("Courier",10));
+          model->setItem(row, i+1, item);
+          model->setHeaderData(i+1, Qt::Horizontal, QObject::tr("") );
+        }
+      }
+    }
+    seq_table_view_->resizeColumnsToContents();
+    std::cout << seq_table_view_->styleSheet().toStdString() << std::endl;
+  }
+}
+
+void SequenceViewerV2::NodeRemoved(const gfx::GfxNodeP& node)
+{
+  if (gfx::EntityP o=boost::dynamic_pointer_cast<gfx::Entity>(node)) {
+
+  }
 }
 
 SequenceViewerV2::~SequenceViewerV2(){}
diff --git a/modules/gui/src/sequence/sequence_viewer.hh b/modules/gui/src/sequence/sequence_viewer.hh
index c6cb34e3bb294bf0e3eb1793d6248ad3eca61ce0..d81f887f93d474a1e4b94b75e4ad367520f4f018 100644
--- a/modules/gui/src/sequence/sequence_viewer.hh
+++ b/modules/gui/src/sequence/sequence_viewer.hh
@@ -24,26 +24,33 @@
  */
 
 #include <QWidget>
-#include <QTableView>
+
+#include <ost/gfx/scene.hh>
+#include <ost/gfx/gfx_object.hh>
 
 #include <ost/gui/widget.hh>
 
 #include <ost/gui/module_config.hh>
 
+#include "sequence_table_view.hh"
+
 namespace ost { namespace gui {
 
 /// \brief QTableView with first column not moving
-class DLLEXPORT_OST_GUI SequenceViewerV2 : public Widget {
+class DLLEXPORT_OST_GUI SequenceViewerV2 : public Widget, public gfx::SceneObserver  {
   Q_OBJECT
 public:
   SequenceViewerV2(QWidget* parent=NULL);
   ~SequenceViewerV2();
 
+  virtual void NodeAdded(const gfx::GfxNodeP& node);
+  virtual void NodeRemoved(const gfx::GfxNodeP& node);
+
   virtual bool Restore(const QString&){return true;};
   virtual bool Save(const QString&){return true;};
 
 private:
-  QTableView* seq_table_view_;
+  SequenceTableView* seq_table_view_;
 };
 
 }}
diff --git a/modules/gui/src/sequence_viewer/sequence_viewer_base.cc b/modules/gui/src/sequence_viewer/sequence_viewer_base.cc
index 982b6f215c54076611f467f281f747e523344635..61cae9aac9015f3c3db6a27741a12c7f84da109a 100644
--- a/modules/gui/src/sequence_viewer/sequence_viewer_base.cc
+++ b/modules/gui/src/sequence_viewer/sequence_viewer_base.cc
@@ -207,7 +207,7 @@ SequenceViewerBase::Style SequenceViewerBase::GetDisplayStyle() const
 
 void SequenceViewerBase::AddSequence(SequenceItem* seq)
 {
-  seq->SetShowSecStructure(style_==LOOSE);  
+  seq->SetShowSecStructure(style_==LOOSE);
   scene_->AddSequence(seq);
   QRectF rect=scene_->itemsBoundingRect();
   view_->setSceneRect(QRectF(0, 0, +rect.left()+rect.width(),