diff --git a/modules/gui/pymod/export_data_viewer.cc b/modules/gui/pymod/export_data_viewer.cc
index d8d9f91bc385498db8dad436052f8c9688058056..c1f561062896211d38acb2a1417e4d9f23d853d4 100644
--- a/modules/gui/pymod/export_data_viewer.cc
+++ b/modules/gui/pymod/export_data_viewer.cc
@@ -25,32 +25,34 @@
 #include <boost/python.hpp>
 #include <ost/base.hh>
 #include <ost/gui/data_viewer/data_viewer.hh>
-#include "data_viewer_proxy.hh"
 #include <ost/gui/data_viewer/overlay_manager.hh>
 
+#include "sip_handler.hh"
+
 using namespace boost::python;
 using namespace ost::img;
 using namespace ost;
 using namespace ost::img::gui;
+using namespace ost::gui;
 
 namespace {
 
-void add_dock1(DataViewerProxy* p, QWidget* w, const String& name) 
+void add_dock1(DataViewer* p, QWidget* w, const String& name)
 {
   p->AddDockWidget(w,QString::fromStdString(name));
 }
 
-void add_dock2(DataViewerProxy* p, QWidget* w, const QString& name) 
+void add_dock2(DataViewer* p, QWidget* w, const QString& name)
 {
   p->AddDockWidget(w,name);
 }
 
-void add_dock3(DataViewerProxy* p, QWidget* w, const String& name, bool s) 
+void add_dock3(DataViewer* p, QWidget* w, const String& name, bool s)
 {
   p->AddDockWidget(w,QString::fromStdString(name),s);
 }
 
-void add_dock4(DataViewerProxy* p, QWidget* w, const QString& name, bool s) 
+void add_dock4(DataViewer* p, QWidget* w, const QString& name, bool s)
 {
   p->AddDockWidget(w,name,s);
 }
@@ -61,30 +63,32 @@ BOOST_PYTHON_MEMBER_FUNCTION_OVERLOADS(o_AddOverlay, AddOverlay, 1, 2)
 
 void export_data_viewer()
 {
-  class_<DataViewerProxy, DataViewerProxyPtr, bases<ost::gui::SipHandlerBase> >("DataViewer",no_init)
-    .def("SetData",&DataViewerProxy::SetData)
-    .def("SetName",&DataViewerProxy::SetName)
-    .def("GetOverlayManager",&DataViewerProxy::GetOverlayManager)
-    .def("GetNormalizer",&DataViewerProxy::GetNormalizer,
+  class_<DataViewer, boost::noncopyable >("DataViewer",no_init)
+    .def("SetData",&DataViewer::SetData)
+    .def("SetName",&DataViewer::SetName)
+    .def("GetOverlayManager",&DataViewer::GetOverlayManager)
+    .def("GetNormalizer",&DataViewer::GetNormalizer,
 	 return_value_policy<return_by_value>())
-    .def("Renormalize",&DataViewerProxy::Renormalize)
-    .def("AddOverlay",&DataViewerProxy::AddOverlay,o_AddOverlay())
-    .def("ClearOverlays",&DataViewerProxy::ClearOverlays)
-    .def("GetSelection",&DataViewerProxy::GetSelection)
-    .def("UpdateView",&DataViewerProxy::UpdateView)
-    .def("Recenter",&DataViewerProxy::Recenter)
+    .def("Renormalize",&DataViewer::Renormalize)
+    .def("AddOverlay",&DataViewer::AddOverlay,o_AddOverlay())
+    .def("ClearOverlays",&DataViewer::ClearOverlays)
+    .def("GetSelection",&DataViewer::GetSelection)
+    .def("UpdateView",&DataViewer::UpdateView)
+    .def("Recenter",&DataViewer::Recenter)
     .def("AddDockWidget",add_dock1)
     .def("AddDockWidget",add_dock2)
     .def("AddDockWidget",add_dock3)
     .def("AddDockWidget",add_dock4)
-    .def("RemoveDockWidget",&DataViewerProxy::RemoveDockWidget)
-    .def("SetAntialiasing",&DataViewerProxy::SetAntialiasing)
-    .def("Show",&DataViewerProxy::Show)
-    .def("Hide", &DataViewerProxy::Hide)
+    .def("RemoveDockWidget",&DataViewer::RemoveDockWidget)
+    .def("SetAntialiasing",&DataViewer::SetAntialiasing)
+    .def("Show",&DataViewer::show)
+    .def("Hide", &DataViewer::hide)
+    .def("GetQObject",&get_py_qobject<DataViewer>)
+    .add_property("qobject", &get_py_qobject<DataViewer>)
     /*
-    .def("SetAutoNormalize",&DataViewerProxy::SetAutoNormalize)
-    .def("ShowClickedPosition",&DataViewerProxy::ShowClickedPosition,o_ShowClickedPosition())
-    .def("GetClickedPosition",&DataViewerProxy::GetClickedPosition)
-    */    
+    .def("SetAutoNormalize",&DataViewer::SetAutoNormalize)
+    .def("ShowClickedPosition",&DataViewer::ShowClickedPosition,o_ShowClickedPosition())
+    .def("GetClickedPosition",&DataViewer::GetClickedPosition)
+    */
     ;
 }
diff --git a/modules/gui/pymod/export_gosty.cc b/modules/gui/pymod/export_gosty.cc
index 039843d1f0ea1a38f175deebab29c259867deb7d..88bb732874744cec1e379365cece71efc413b166 100644
--- a/modules/gui/pymod/export_gosty.cc
+++ b/modules/gui/pymod/export_gosty.cc
@@ -34,7 +34,8 @@ using namespace boost::python;
 #include "sip_handler.hh"
 
 #if OST_IMG_ENABLED
-#include "data_viewer_proxy.hh"
+#include <ost/img/data.hh>
+#include <ost/gui/data_viewer/data_viewer.hh>
 using namespace ost::img::gui;
 #endif
 
@@ -44,13 +45,13 @@ using namespace ost::gui;
 namespace {
 
 #if OST_IMG_ENABLED
-DataViewerProxyPtr app_create_data_viewer1(GostyApp* app, const ost::img::Data& d, const QString& name)
+DataViewer* app_create_data_viewer1(GostyApp* app, const ost::img::Data& d, const QString& name)
 {
-  return DataViewerProxyPtr(new DataViewerProxy(app->CreateDataViewer(d,name)));
+  return app->CreateDataViewer(d,name);
 }
-DataViewerProxyPtr app_create_data_viewer2(GostyApp* app, const ost::img::Data& d)
+DataViewer* app_create_data_viewer2(GostyApp* app, const ost::img::Data& d)
 {
-  return DataViewerProxyPtr(new DataViewerProxy(app->CreateDataViewer(d)));
+  return app->CreateDataViewer(d);
 }
 #endif
 
@@ -100,8 +101,8 @@ void export_Gosty()
     .add_property("tool_options_win", make_function(&GostyApp::GetToolOptionsWin,
         return_value_policy<reference_existing_object>()))
      #if OST_IMG_ENABLED
-    .def("CreateDataViewer", &app_create_data_viewer1)
-    .def("CreateDataViewer", &app_create_data_viewer2)
+    .def("CreateDataViewer", &app_create_data_viewer1,return_value_policy<reference_existing_object>())
+    .def("CreateDataViewer", &app_create_data_viewer2,return_value_policy<reference_existing_object>())
     #endif
     .def("ProcessEvents", &GostyApp::ProcessEvents)           
     .add_property("perspective",