diff --git a/modules/gui/pymod/export_sequence_viewer.cc b/modules/gui/pymod/export_sequence_viewer.cc
index 268b4dd2b28d3779d9b5d2260c978f21cdb0c293..20b56cf44a2de1ec4485d589f5485b93911061c7 100644
--- a/modules/gui/pymod/export_sequence_viewer.cc
+++ b/modules/gui/pymod/export_sequence_viewer.cc
@@ -96,12 +96,14 @@ std::vector<String> get_display_modes_c(SequenceViewer* seq_viewer, const seq::A
 
 void export_SequenceViewer()
 {
-  class_<SequenceViewer, boost::noncopyable >("SequenceViewer",init<>())
-    .def(init<bool, optional<QWidget*> >())
+  class_<SequenceViewer, boost::noncopyable >("SequenceViewer")
+    .def(init<optional<bool, bool, const QString&, 
+              QWidget*> >())
     .def("Show", &SequenceViewer::show)
     .def("Hide", &SequenceViewer::hide)
     .def("AddEntity", &SequenceViewer::AddEntity)
     .def("RemoveEntity", &SequenceViewer::RemoveEntity)
+    .def("SetAlignment", &SequenceViewer::SetAlignment)
     .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 b8dc257669677f595000a3088ce57a01ccb9b7e6..9852315401e422d937ad56b65e5cc4f7eaf9bfee 100644
--- a/modules/gui/src/sequence_viewer/sequence_model.cc
+++ b/modules/gui/src/sequence_viewer/sequence_model.cc
@@ -208,6 +208,17 @@ void SequenceModel::EmitRowChanged(int row)
                          this->index(row, this->columnCount()-1));
 }
 
+void SequenceModel::Clear()
+{
+  // remove everything but the title row. 
+  this->beginRemoveRows(QModelIndex(), 1, this->rowCount());
+  objects_.erase(objects_.begin()+1, objects_.end());
+  this->endRemoveRows();
+  this->beginRemoveColumns(QModelIndex(), 0, this->max_columns);
+  this->max_columns=0;
+  this->endRemoveColumns();
+}
+
 QPair<seq::AlignmentHandle, int> SequenceModel::GetAlignmentForRow(int row)
 {
   QPair<int, BaseViewObject*> p=this->GetRowWithItem(row);
diff --git a/modules/gui/src/sequence_viewer/sequence_model.hh b/modules/gui/src/sequence_viewer/sequence_model.hh
index cb5e2d849e5b92c5d1e48d0ec747a83a57f30bee..0da09222e2ac39ea13fdd408c9bbe91da7ffaeac 100644
--- a/modules/gui/src/sequence_viewer/sequence_model.hh
+++ b/modules/gui/src/sequence_viewer/sequence_model.hh
@@ -86,6 +86,8 @@ public:
   QPair<seq::AlignmentHandle, int> GetAlignmentForRow(int row);
   
   void EmitRowChanged(int row);
+  
+  void Clear();
 public slots:
   void ZoomIn();
   void ZoomOut();
diff --git a/modules/gui/src/sequence_viewer/sequence_viewer.cc b/modules/gui/src/sequence_viewer/sequence_viewer.cc
index 5ad1dda2e48a38595ef5ab1ae657f901bf2cba86..888a8759711f5972bc0578b0bd1ec01c09720c22 100644
--- a/modules/gui/src/sequence_viewer/sequence_viewer.cc
+++ b/modules/gui/src/sequence_viewer/sequence_viewer.cc
@@ -77,11 +77,12 @@ struct GetNodesVisitor: public gfx::GfxNodeVisitor {
 };
 
 SequenceViewer::SequenceViewer(bool stand_alone, bool observe_scene,
+                               const QString& title,
                                QWidget* parent): Widget(NULL,parent)
 {
   observe_scene_=observe_scene;
   model_ = new SequenceModel(this);
-
+  this->setWindowTitle(title);
   QVBoxLayout* layout = new QVBoxLayout(this);
   layout->setMargin(0);
   layout->setSpacing(0);
@@ -226,6 +227,12 @@ void SequenceViewer::AddAlignment(const seq::AlignmentHandle& alignment)
   }
 }
 
+void SequenceViewer::SetAlignment(const seq::AlignmentHandle& alignment)
+{
+  model_->Clear();
+  this->AddAlignment(alignment);
+}
+
 void SequenceViewer::RemoveAlignment(const seq::AlignmentHandle& alignment)
 {
   model_->RemoveAlignment(alignment);
@@ -251,7 +258,10 @@ void SequenceViewer::SelectionModelChanged(const QItemSelection& sel, const QIte
 void SequenceViewer::SelectionChanged(const gfx::GfxObjP& o,
                                       const mol::EntityView& view)
 {
-  disconnect(seq_table_view_->selectionModel(), SIGNAL(selectionChanged(const QItemSelection&, const QItemSelection&)), this, SLOT(SelectionModelChanged(const QItemSelection&, const QItemSelection&)));
+  disconnect(seq_table_view_->selectionModel(), 
+             SIGNAL(selectionChanged(const QItemSelection&, 
+                                     const QItemSelection&)), 
+             this, SLOT(SelectionModelChanged(const QItemSelection&, const QItemSelection&)));
   gfx::EntityP entity=boost::dynamic_pointer_cast<gfx::Entity>(o);
   if(entity){
     const QModelIndexList& list = model_->GetModelIndexes(entity, view);
diff --git a/modules/gui/src/sequence_viewer/sequence_viewer.hh b/modules/gui/src/sequence_viewer/sequence_viewer.hh
index 1f83cb7de4cd4a0f97c1007a4b6a605fda6781d9..7fadb40dbbc63a8bf5fd465745aacc2304a4c9bb 100644
--- a/modules/gui/src/sequence_viewer/sequence_viewer.hh
+++ b/modules/gui/src/sequence_viewer/sequence_viewer.hh
@@ -54,6 +54,7 @@ class DLLEXPORT_OST_GUI SequenceViewer : public Widget, public gfx::SceneObserve
   Q_OBJECT
 public:
   SequenceViewer(bool stand_alone=true, bool observe_scene=false,
+                 const QString& title="Sequence Viewer",
                  QWidget* parent=NULL);
   ~SequenceViewer();
 
@@ -64,6 +65,9 @@ public:
   void SetObserveScene(bool flag) { observe_scene_=flag; }
   bool IsObservingScene() const { return observe_scene_; }
   virtual void AddAlignment(const seq::AlignmentHandle& alignment);
+
+  void SetAlignment(const seq::AlignmentHandle& alignment);
+  
   virtual void RemoveAlignment(const seq::AlignmentHandle& alignment);
   
   virtual bool Restore(const QString&){ return true; };