diff --git a/modules/gui/pymod/export_sequence_viewer.cc b/modules/gui/pymod/export_sequence_viewer.cc
index 32e79ed48d3eb9e90f0f8aa5aa072388907c4e22..fb2c7e45fa38274c375a36e9c39d48debe6b2012 100644
--- a/modules/gui/pymod/export_sequence_viewer.cc
+++ b/modules/gui/pymod/export_sequence_viewer.cc
@@ -100,6 +100,8 @@ void export_SequenceViewer()
     .def(init<bool, optional<QWidget*> >())
     .def("Show", &SequenceViewer::show)
     .def("Hide", &SequenceViewer::hide)
+    .def("AddEntity", &SequenceViewer::AddEntity)
+    .def("RemoveEntity", &SequenceViewer::RemoveEntity)
     .def("AddAlignment", &SequenceViewer::AddAlignment)
     .def("RemoveAlignment", &SequenceViewer::RemoveAlignment)
     .def("GetDisplayModes", &get_display_modes_a)
diff --git a/modules/gui/src/sequence_viewer/sequence_model.cc b/modules/gui/src/sequence_viewer/sequence_model.cc
index 923a24c0fc2bb2adac5bb72b0be5bf5f21f0862f..293ffe2d6291148c330b9cdb56df2fff547493d8 100644
--- a/modules/gui/src/sequence_viewer/sequence_model.cc
+++ b/modules/gui/src/sequence_viewer/sequence_model.cc
@@ -95,7 +95,7 @@ void SequenceModel::InsertSequences(const QList<QString>& names, seq::SequenceLi
   this->endInsertRows();
 }
 
-void SequenceModel::InsertGfxEntity(gfx::EntityP& ent){
+void SequenceModel::InsertGfxEntity(const gfx::EntityP& ent){
   mol::EntityView view=ent->GetView();
   int size = view.GetChainList().size();
   int cols = this->columnCount();
@@ -111,7 +111,7 @@ void SequenceModel::InsertGfxEntity(gfx::EntityP& ent){
   this->endInsertRows();
 }
 
-void SequenceModel::RemoveGfxEntity(gfx::EntityP& entity){
+void SequenceModel::RemoveGfxEntity(const gfx::EntityP& entity){
   if(SequenceViewObject* obj = this->GetItem(entity)){
     int index = this->GetGlobalRow(obj,0);
     this->beginRemoveRows(QModelIndex(),index,index+obj->GetRowCount()-1);
diff --git a/modules/gui/src/sequence_viewer/sequence_model.hh b/modules/gui/src/sequence_viewer/sequence_model.hh
index d0afbbc4d8d8f7d5ed192d9ee6cab239f753fbaf..f05241df018cbb6d6736d7cb676fa69a46f9c52d 100644
--- a/modules/gui/src/sequence_viewer/sequence_model.hh
+++ b/modules/gui/src/sequence_viewer/sequence_model.hh
@@ -47,13 +47,13 @@ public:
   SequenceModel(QObject *parent = 0);
 
   void InsertAlignment(const seq::AlignmentHandle& alignment);
-  void InsertGfxEntity(gfx::EntityP& entity);
+  void InsertGfxEntity(const gfx::EntityP& entity);
   void InsertChain(QString& name, mol::ChainView& view);
   void InsertSequence(QString& name, seq::SequenceHandle& seq);
   void InsertSequences(const QList<QString>& names, seq::SequenceList& list);
 
   void RemoveAlignment(const seq::AlignmentHandle& alignment);
-  void RemoveGfxEntity(gfx::EntityP& entity);
+  void RemoveGfxEntity(const gfx::EntityP& entity);
 
   QModelIndexList GetModelIndexes(gfx::EntityP& entity, const mol::EntityView& view);
   QModelIndexList GetModelIndexes(const QString& subject, const QString& sequence_name=QString());
diff --git a/modules/gui/src/sequence_viewer/sequence_view_object.cc b/modules/gui/src/sequence_viewer/sequence_view_object.cc
index 8b63980bf5fa0a9f1142df964ec8dc5cb8454a7a..fdc227d2eb41ae1323f1c9b7a01bba8e62d7831e 100644
--- a/modules/gui/src/sequence_viewer/sequence_view_object.cc
+++ b/modules/gui/src/sequence_viewer/sequence_view_object.cc
@@ -70,7 +70,7 @@ SequenceViewObject::SequenceViewObject(mol::ChainView& chain, const QString& nam
   this->SetDisplayMode(properties_mode);
 }
 
-SequenceViewObject::SequenceViewObject(gfx::EntityP& entity, QObject* parent): BaseViewObject(parent), entity_(entity)
+SequenceViewObject::SequenceViewObject(const gfx::EntityP& entity, QObject* parent): BaseViewObject(parent), entity_(entity)
 {
   this->Init();
   mol::EntityView view =entity->GetView();
diff --git a/modules/gui/src/sequence_viewer/sequence_view_object.hh b/modules/gui/src/sequence_viewer/sequence_view_object.hh
index 2ad390a95bd9a19a91ae3db86c05ac90a297e2ec..ba862c724efba112968fdc735f0f1cc1271a4492 100644
--- a/modules/gui/src/sequence_viewer/sequence_view_object.hh
+++ b/modules/gui/src/sequence_viewer/sequence_view_object.hh
@@ -50,7 +50,7 @@ public:
   SequenceViewObject(seq::SequenceList& sequences, const QList<QString>& names, QObject* parent = 0);
   SequenceViewObject(seq::SequenceHandle& sequence, const QString& name, QObject* parent = 0);
   SequenceViewObject(mol::ChainView& chain, const QString& name, QObject* parent = 0);
-  SequenceViewObject(gfx::EntityP& entity, QObject* parent = 0);
+  SequenceViewObject(const gfx::EntityP& entity, QObject* parent = 0);
   SequenceViewObject(QObject* parent = 0);
 
   void Init();
diff --git a/modules/gui/src/sequence_viewer/sequence_viewer.cc b/modules/gui/src/sequence_viewer/sequence_viewer.cc
index c5d86d7834cb9557d387faefb0f96d02c243eec3..a2d530e5bce7b1faca2f7f74148de1af9e8af4f3 100644
--- a/modules/gui/src/sequence_viewer/sequence_viewer.cc
+++ b/modules/gui/src/sequence_viewer/sequence_viewer.cc
@@ -166,20 +166,30 @@ void SequenceViewer::InitActions()
   connect(menu_action, SIGNAL(triggered(bool)), this, SLOT(DisplayMenu()));
 }
 
+void SequenceViewer::AddEntity(const gfx::EntityP& entity)
+{
+  model_->InsertGfxEntity(entity);
+  seq_table_view_->resizeColumnsToContents();
+  seq_table_view_->resizeRowsToContents();
+  this->UpdateSearchBar();
+}
+
+void SequenceViewer::RemoveEntity(const gfx::EntityP& entity)
+{
+  model_->RemoveGfxEntity(entity);
+}
+
 void SequenceViewer::NodeAdded(const gfx::GfxNodeP& n)
 {
   if (gfx::EntityP o=boost::dynamic_pointer_cast<gfx::Entity>(n)) {
-    model_->InsertGfxEntity(o);
-    seq_table_view_->resizeColumnsToContents();
-    seq_table_view_->resizeRowsToContents();
+    this->AddEntity(o);
   }
-  this->UpdateSearchBar();
 }
 
 void SequenceViewer::NodeRemoved(const gfx::GfxNodeP& node)
 {
   if (gfx::EntityP o=boost::dynamic_pointer_cast<gfx::Entity>(node)) {
-    model_->RemoveGfxEntity(o);
+    this->RemoveEntity(o);
   }
 }
 
diff --git a/modules/gui/src/sequence_viewer/sequence_viewer.hh b/modules/gui/src/sequence_viewer/sequence_viewer.hh
index e4f8d55f2638b6abfc260e4eec4bf6a43c629a54..c5190ace95dbdafb1e808b10a475f36457b24a87 100644
--- a/modules/gui/src/sequence_viewer/sequence_viewer.hh
+++ b/modules/gui/src/sequence_viewer/sequence_viewer.hh
@@ -49,10 +49,11 @@ public:
   SequenceViewer(bool stand_alone=true, QWidget* parent=NULL);
   ~SequenceViewer();
 
-  virtual void NodeAdded(const gfx::GfxNodeP& node);
-  virtual void NodeRemoved(const gfx::GfxNodeP& node);
   virtual void SelectionChanged(const gfx::GfxObjP& o, const mol::EntityView& view);
 
+  virtual void AddEntity(const gfx::EntityP& entity);
+  virtual void RemoveEntity(const gfx::EntityP& entity);
+
   virtual void AddAlignment(const seq::AlignmentHandle& alignment);
   virtual void RemoveAlignment(const seq::AlignmentHandle& alignment);
 
@@ -78,6 +79,9 @@ public slots:
   void OnSearchBarUpdate(const QString&, bool, const QString&);
 
 private:
+  virtual void NodeAdded(const gfx::GfxNodeP& node);
+  virtual void NodeRemoved(const gfx::GfxNodeP& node);
+
   void InitActions();
   void InitView();
   void InitSearchBar();