diff --git a/modules/gui/pymod/data_viewer_proxy.cc b/modules/gui/pymod/data_viewer_proxy.cc
index 3ddf8339b9f10eb556ce464c1bc1695b85107cc5..d4d418e1f378588c09dfed18f7541788df47b07a 100644
--- a/modules/gui/pymod/data_viewer_proxy.cc
+++ b/modules/gui/pymod/data_viewer_proxy.cc
@@ -154,6 +154,11 @@ void DataViewerProxy::ClearOverlays()
   viewer()->ClearOverlays();
 }
 
+void DataViewerProxy::ClearActiveOverlay()
+{
+  viewer()->ClearActiveOverlay();
+}
+
 OverlayManagerPtr DataViewerProxy::GetOverlayManager() const
 {
   return viewer()->GetOverlayManager();
@@ -185,6 +190,10 @@ void DataViewerProxy::Hide()
   viewer()->hide();
 }
 
+object DataViewerProxy::GetButtonGroup()
+{
+  return ost::gui::get_py_qobject<QButtonGroup>(viewer()->GetButtonGroup());
+}
 
 object DataViewerProxy::GetQObject(){
   return ost::gui::get_py_qobject<DataViewer>(viewer());
diff --git a/modules/gui/pymod/data_viewer_proxy.hh b/modules/gui/pymod/data_viewer_proxy.hh
index 49e764b65e15271db14331f2772c2f64969ead1c..096485b406fa07b36082936fa0c966e9e862e155 100644
--- a/modules/gui/pymod/data_viewer_proxy.hh
+++ b/modules/gui/pymod/data_viewer_proxy.hh
@@ -83,6 +83,7 @@ public:
   int AddOverlay(const OverlayPtr& ov, bool make_active=true);
   OverlayManagerPtr GetOverlayManager() const;
   void ClearOverlays();
+  void ClearActiveOverlay();
 
   void AddDockWidget(QWidget* w, const QString& name, bool shown=true, int area=2);
   void RemoveDockWidget(QWidget* w);
@@ -96,7 +97,7 @@ public:
   //Vec3 GetClickedPosition();
 
   void Hide();  
-
+  object GetButtonGroup();
   object GetQObject();
 protected:
   QPointer<DataViewer> viewer_ptr_;
diff --git a/modules/gui/pymod/export_data_viewer.cc b/modules/gui/pymod/export_data_viewer.cc
index e1b047d84cd09022b75a953bbeb25fdf631304d5..d5e03fe5e3888bd86c74ba531f5e01afdcc4c796 100644
--- a/modules/gui/pymod/export_data_viewer.cc
+++ b/modules/gui/pymod/export_data_viewer.cc
@@ -66,6 +66,7 @@ void export_data_viewer()
     .def("Renormalize",&DataViewerProxy::Renormalize)
     .def("AddOverlay",&DataViewerProxy::AddOverlay,o_AddOverlay())
     .def("ClearOverlays",&DataViewerProxy::ClearOverlays)
+    .def("ClearActiveOverlay",&DataViewerProxy::ClearActiveOverlay)
     .def("GetSelection",&DataViewerProxy::GetSelection)
     .def("SetSelection",&DataViewerProxy::SetSelection)
     .def("UpdateView",&DataViewerProxy::UpdateView)
@@ -99,6 +100,7 @@ void export_data_viewer()
     .def("SetOffset", &DataViewerProxy::SetOffset)
     .def("GetOffset", &DataViewerProxy::GetOffset)
     .add_property("offset", &DataViewerProxy::GetOffset, &DataViewerProxy::SetOffset)
+    .def("GetButtonGroup", &DataViewerProxy::GetButtonGroup)
     .def("GetQObject",&DataViewerProxy::GetQObject)
     .add_property("qobject",&DataViewerProxy::GetQObject)
 
diff --git a/modules/gui/pymod/export_gosty.cc b/modules/gui/pymod/export_gosty.cc
index adc5594a8454dfb71042755a10c28e1818229e5d..ef7ee6777b43c63ad6c0e8ce0e296b6a0c73c48c 100644
--- a/modules/gui/pymod/export_gosty.cc
+++ b/modules/gui/pymod/export_gosty.cc
@@ -54,8 +54,11 @@ DataViewerProxyPtr app_create_data_viewer2(GostyApp* app, const ost::img::ImageH
 {
   return DataViewerProxyPtr(new DataViewerProxy(app->CreateDataViewer(d)));
 }
+DataViewerProxyPtr app_create_data_viewer3(GostyApp* app, const ost::img::ImageHandle& d, const QString& name, int noparent)
+{
+  return DataViewerProxyPtr(new DataViewerProxy(app->CreateDataViewer(d,name,noparent)));
+}
 #endif
-
 }
 
 void app_add_widget_to_app_a(GostyApp* app, const QString& ident,
@@ -115,6 +118,7 @@ void export_Gosty()
      #if OST_IMG_ENABLED
     .def("CreateDataViewer", &app_create_data_viewer1)
     .def("CreateDataViewer", &app_create_data_viewer2)
+    .def("CreateDataViewer", &app_create_data_viewer3)
     #endif
     .def("ProcessEvents", &GostyApp::ProcessEvents)           
     .add_property("perspective", 
diff --git a/modules/gui/src/data_viewer/data_viewer.cc b/modules/gui/src/data_viewer/data_viewer.cc
index d64e88df2a7dbae59c0df850edd78f449ece9827..0c157df37e550bdadbe07cab027f2a762c950f6f 100644
--- a/modules/gui/src/data_viewer/data_viewer.cc
+++ b/modules/gui/src/data_viewer/data_viewer.cc
@@ -205,6 +205,11 @@ geom::Vec2 DataViewer::GetOffset() const
   return panel_->GetOffset();
 }
 
+QButtonGroup* DataViewer::GetButtonGroup(void)
+{
+  return ov_manager_gui_->GetButtonGroup();
+}
+
 int DataViewer::AddOverlay(const OverlayPtr& ov, bool make_active)
 {
   int retval= ov_manager_->AddOverlay(ov,make_active);
@@ -217,6 +222,11 @@ void DataViewer::ClearOverlays()
   ov_manager_->DeleteAllOverlays();
 }
 
+void DataViewer::ClearActiveOverlay()
+{
+  ov_manager_->DeleteActiveOverlay();
+}
+
 OverlayManagerPtr DataViewer::GetOverlayManager() const
 {
   return ov_manager_;
diff --git a/modules/gui/src/data_viewer/data_viewer.hh b/modules/gui/src/data_viewer/data_viewer.hh
index 902466a68c9b44ca0b7c4e1070b9dbf384de3c7d..ca6893edc34895fde6df19e2b1344ea11affcb98 100644
--- a/modules/gui/src/data_viewer/data_viewer.hh
+++ b/modules/gui/src/data_viewer/data_viewer.hh
@@ -95,6 +95,9 @@ public:
   //! remove all overlays
   void ClearOverlays();
 
+  //! remove the active overlay
+  void ClearActiveOverlay();
+
   //! return the overlay manager for this viewer
   OverlayManagerPtr GetOverlayManager() const;
 
@@ -142,6 +145,8 @@ public:
   //! get image offset
   geom::Vec2 GetOffset() const;
 
+  QButtonGroup* GetButtonGroup(void);
+
 signals:
   void released();
 
diff --git a/modules/gui/src/data_viewer/overlay_manager.cc b/modules/gui/src/data_viewer/overlay_manager.cc
index a9bc950284806a530d92687412e398deb7edf3be..ac2a709fbff4888096c6877a08b919e3e1dbc93d 100644
--- a/modules/gui/src/data_viewer/overlay_manager.cc
+++ b/modules/gui/src/data_viewer/overlay_manager.cc
@@ -103,6 +103,18 @@ void OverlayManager::DeleteAllOverlays()
   ov_list_.clear();
 }
 
+void OverlayManager::DeleteActiveOverlay()
+{
+  OverlayList::iterator pos=find_ov(active_ov_);
+  if (pos!=ov_list_.end()) {
+    for(ObserverList::iterator xit=obs_list_.begin();xit!=obs_list_.end();++xit) {
+      (*xit)->OnRemoveOverlay(this, pos->id);
+    }
+  pos=ov_list_.erase(pos);
+  active_ov_.reset();
+  }
+  
+}
 
 void OverlayManager::ActivateOverlay(const String& name)
 {
@@ -351,4 +363,15 @@ OverlayManager::OverlayList::iterator OverlayManager::find_ov(const String& name
   return ov_list_.end();
 }
 
+OverlayManager::OverlayList::iterator OverlayManager::find_ov(OverlayPtr anoverlay)
+{
+  for(OverlayList::iterator it=ov_list_.begin();it!=ov_list_.end();++it) {
+    if(anoverlay==it->ov) {
+      return it;
+      break;
+    }
+  }
+  return ov_list_.end();
+}
+
 }}}  //ns
diff --git a/modules/gui/src/data_viewer/overlay_manager.hh b/modules/gui/src/data_viewer/overlay_manager.hh
index d1e9736093b20134e17ed2e573a4e001d44b8bd8..2a3bb76573b3052656a0533ec3798dc377bff1e6 100644
--- a/modules/gui/src/data_viewer/overlay_manager.hh
+++ b/modules/gui/src/data_viewer/overlay_manager.hh
@@ -110,6 +110,8 @@ public:
 
   void DeleteAllOverlays();
 
+  void DeleteActiveOverlay();
+
   void OnDraw(QPainter& pnt,  DataViewerPanel* dvp) const;
 
   bool OnMouseEvent(QMouseEvent* e,  DataViewerPanel* dvp, const QPoint& lastmouse) const;
@@ -138,6 +140,7 @@ private:
 
   OverlayList::iterator find_ov(int id);
   OverlayList::iterator find_ov(const String& name);
+  OverlayList::iterator find_ov(OverlayPtr anoverlay);
 };
 
 
diff --git a/modules/gui/src/data_viewer/overlay_manager_gui.cc b/modules/gui/src/data_viewer/overlay_manager_gui.cc
index ba9d884cbd88b0f603c670a93dcfb995eb168177..69bb6a5dd91f740aec70fea1a4684fcbaed7a2da 100644
--- a/modules/gui/src/data_viewer/overlay_manager_gui.cc
+++ b/modules/gui/src/data_viewer/overlay_manager_gui.cc
@@ -209,6 +209,11 @@ void OverlayManagerGUI::OnEventMenu(QAction* e)
 {
 }
 
+QButtonGroup* OverlayManagerGUI::GetButtonGroup(void)
+{
+  return active_group_;
+}
+
 void OverlayManagerGUI::UpdateView()
 {
 }
diff --git a/modules/gui/src/data_viewer/overlay_manager_gui.hh b/modules/gui/src/data_viewer/overlay_manager_gui.hh
index 437b0c3b72617d6ad2d213be3feadee2cf34997c..13ba39f87dedfcdeb5c78bdb5e633dd2ed7a77d6 100644
--- a/modules/gui/src/data_viewer/overlay_manager_gui.hh
+++ b/modules/gui/src/data_viewer/overlay_manager_gui.hh
@@ -120,6 +120,8 @@ public:
   void OnEventMenuPopup(QAction* e);
   void OnEventMenu(QAction* e);
 
+  QButtonGroup* GetButtonGroup(void);
+
 public slots:
   void SetInfoText(const QString& t);
 
diff --git a/modules/gui/src/gosty_app.cc b/modules/gui/src/gosty_app.cc
index 66c612e94cb2484d17f51b8510d9276646298e81..949c764910e16d957ccec9bd1edba5e9c24b6ec5 100644
--- a/modules/gui/src/gosty_app.cc
+++ b/modules/gui/src/gosty_app.cc
@@ -109,20 +109,30 @@ SequenceViewer* GostyApp::GetSequenceViewer()
 }
 
 #if OST_IMG_ENABLED
-ost::img::gui::DataViewer* GostyApp::CreateDataViewer(const ost::img::ImageHandle& d, const QString& name)
+ost::img::gui::DataViewer* GostyApp::CreateDataViewer(const ost::img::ImageHandle& d, const QString& name, const int noparent)
 {
-  ost::img::gui::DataViewer* viewer=new ost::img::gui::DataViewer(main_,d,name);
-  QMdiSubWindow* mdi=new QMdiSubWindow(this->GetPerspective()->GetMainArea());
-  mdi->setWindowTitle(name);
-  mdi->setWidget(viewer);
-  mdi->setFocusProxy(viewer);
-  viewer->setAttribute(Qt::WA_DeleteOnClose);
-  mdi->setAttribute(Qt::WA_DeleteOnClose);
-  viewer->setParent(mdi);
-  this->GetPerspective()->GetMainArea()->addSubWindow(mdi);
-  mdi->showMaximized();
-  connect(viewer,SIGNAL(released()),mdi,SLOT(close()));
-  return viewer; 
+  ost::img::gui::DataViewer* viewer=NULL;
+  if (noparent)
+  {
+    viewer=new ost::img::gui::DataViewer(NULL,d,name);
+  }
+  else
+  {
+    viewer=new ost::img::gui::DataViewer(main_,d,name);
+    QMdiSubWindow* mdi=new QMdiSubWindow(this->GetPerspective()->GetMainArea());
+    mdi->setWindowTitle(name);
+    mdi->setWidget(viewer);
+    mdi->setFocusProxy(viewer);
+    viewer->setAttribute(Qt::WA_DeleteOnClose);
+    mdi->setAttribute(Qt::WA_DeleteOnClose);
+    viewer->setParent(mdi);
+    this->GetPerspective()->GetMainArea()->addSubWindow(mdi);
+    mdi->showMaximized();
+    connect(viewer,SIGNAL(released()),mdi,SLOT(close()));
+  }
+
+  return viewer;
+
 }
 #endif
   
diff --git a/modules/gui/src/gosty_app.hh b/modules/gui/src/gosty_app.hh
index 1cf803e0036f9d468675d9740f93bbbb8a9e668f..47b0f23fadfe151a262e25f39910b5da9eda1c24 100644
--- a/modules/gui/src/gosty_app.hh
+++ b/modules/gui/src/gosty_app.hh
@@ -124,7 +124,7 @@ public:
 #if OST_IMG_ENABLED
   /// \brief create new DataViewer
   /// 
-  ost::img::gui::DataViewer* CreateDataViewer(const ost::img::ImageHandle& d, const QString& name="");
+  ost::img::gui::DataViewer* CreateDataViewer(const ost::img::ImageHandle& d, const QString& name="", const int noparent=0);
 #endif
 
   /// \brief give the application time to run the mainloop and process events