diff --git a/modules/gfx/pymod/export_color_ops.cc b/modules/gfx/pymod/export_color_ops.cc
index 78f23bac910ab692791ee0ca95e841d8bb3c7ca5..3999960e9365ce05dbe8012a866baf3d52ddd33b 100644
--- a/modules/gfx/pymod/export_color_ops.cc
+++ b/modules/gfx/pymod/export_color_ops.cc
@@ -41,6 +41,7 @@ using namespace ost::gfx;
 void export_ColorOps()
 {
   class_<ColorOp>("ColorOp", init<const String& >())
+    .def(init<const ColorOp&>())
     .def(init<const mol::QueryViewWrapper&, int>())
     .def("CanApplyTo",&ColorOp::CanApplyTo)
     .def("SetSelection",&ColorOp::SetSelection)
@@ -53,6 +54,7 @@ void export_ColorOps()
   ;
 
   class_<BasicGradientColorOp, bases<ColorOp> >("BasicGradientColorOp", init<const String& , const gfx::Gradient& , mol::Prop::Level>())
+    .def(init<const BasicGradientColorOp&>())
     .def("SetGradient",&BasicGradientColorOp::SetGradient)
     .def("GetGradient",&BasicGradientColorOp::GetGradient)
     .def("SetLevel",&BasicGradientColorOp::SetLevel)
@@ -62,6 +64,7 @@ void export_ColorOps()
   ;
 
   class_<ByElementColorOp, bases<ColorOp> >("ByElementColorOp", init<>())
+    .def(init<const ByElementColorOp&>())
     .def(init<const String&>())
     .def(init<const mol::QueryViewWrapper&>())
     .def(init<const String&, int>())
@@ -71,6 +74,7 @@ void export_ColorOps()
   ;
 
   class_<ByChainColorOp, bases<ColorOp> >("ByChainColorOp", init<>())
+    .def(init<const ByChainColorOp&>())
     .def(init<const String&>())
     .def(init<const mol::QueryViewWrapper&>())
     .def(init<const String&, int>())
@@ -82,6 +86,7 @@ void export_ColorOps()
   ;
 
   class_<UniformColorOp, bases<ColorOp> >("UniformColorOp", init<>())
+    .def(init<const UniformColorOp&>())
     .def(init<const String&, const gfx::Color&>())
     .def(init<const String&, int, const gfx::Color&>())
     .def(init<const mol::QueryViewWrapper&, const gfx::Color&>())
@@ -93,6 +98,7 @@ void export_ColorOps()
   ;
 
   class_<GradientColorOp, bases<ColorOp> >("GradientColorOp", init<>())
+    .def(init<const GradientColorOp&>())
     .def(init<const String&, const String&, const gfx::Gradient&, float, float>())
     .def(init<const String&, int, const String&, const gfx::Gradient&, float, float>())
     .def(init<const mol::QueryViewWrapper&, const String&, const gfx::Gradient&, float, float>())
@@ -111,6 +117,7 @@ void export_ColorOps()
   ;
 
   class_<GradientLevelColorOp, bases<GradientColorOp> >("GradientLevelColorOp", init<>())
+    .def(init<const GradientLevelColorOp&>())
     .def(init<const String&, const String&, const gfx::Gradient&, float, float, mol::Prop::Level>())
     .def(init<const String&, int, const String&, const gfx::Gradient&, float, float, mol::Prop::Level>())
     .def(init<const String&, const String&, const gfx::Gradient&, mol::Prop::Level>())
@@ -127,6 +134,7 @@ void export_ColorOps()
 
 
   class_<EntityViewColorOp, bases<GradientColorOp> >("EntityViewColorOp", init<>())
+    .def(init<const EntityViewColorOp&>())
     .def(init<const String&, const gfx::Gradient&, float, float, const mol::EntityView&>())
     .def(init<int, const String&, const gfx::Gradient&, float, float, const mol::EntityView&>())
     .def("SetEntityView",&EntityViewColorOp::SetEntityView)
@@ -137,6 +145,7 @@ void export_ColorOps()
 
 #if OST_IMG_ENABLED
   class_<MapHandleColorOp, bases<GradientColorOp> >("MapHandleColorOp", init<>())
+    .def(init<const MapHandleColorOp&>())
     .def(init<const String&, const String&, const gfx::Gradient&, float, float, const img::MapHandle&>())
     .def(init<const String&, int, const String&, const gfx::Gradient&, float, float, const img::MapHandle&>())
     .def(init<const mol::QueryViewWrapper&, const String&, const gfx::Gradient&, float, float, const img::MapHandle&>())
diff --git a/modules/gfx/pymod/export_render_options.cc b/modules/gfx/pymod/export_render_options.cc
index 2c7277578fe50b20fd1e2345c693a67f3f8dc8c8..712da0edf269c8030dc4eff83f475b211dbf224b 100644
--- a/modules/gfx/pymod/export_render_options.cc
+++ b/modules/gfx/pymod/export_render_options.cc
@@ -36,6 +36,9 @@ void export_RenderOptions()
 {
   class_<RenderOptions, boost::shared_ptr<RenderOptions>, boost::noncopyable>("RenderOptions", no_init)
     .def("GetRenderMode",&RenderOptions::GetRenderMode)
+    .def("NotifyStateChange",&RenderOptions::NotifyStateChange)
+    .def("AddObserver",&RenderOptions::AddObserver)
+    .def("RemoveObserver",&RenderOptions::RemoveObserver)
   ;
 
   class_<LineRenderOptions, boost::shared_ptr<LineRenderOptions>, bases<RenderOptions>, boost::noncopyable>("LineRenderOptions", no_init)
@@ -50,6 +53,7 @@ void export_RenderOptions()
   ;
 
   class_<SimpleRenderOptions, boost::shared_ptr<SimpleRenderOptions>, bases<LineRenderOptions>, boost::noncopyable>("SimpleRenderOptions")
+    .def(init<const SimpleRenderOptions&>())
     .def("SetBondOrderFlag", &SimpleRenderOptions::SetBondOrderFlag)
     .def("SetBondOrderDistance", &SimpleRenderOptions::SetBondOrderDistance)
     .def("GetBondOrderFlag", &SimpleRenderOptions::GetBondOrderFlag)
@@ -61,14 +65,17 @@ void export_RenderOptions()
   ;
 
   class_<LineTraceRenderOptions, boost::shared_ptr<LineTraceRenderOptions>, bases<LineRenderOptions>, boost::noncopyable>("LineTraceRenderOptions")
+    .def(init<const LineTraceRenderOptions&>())
   ;
 
   class_<SlineRenderOptions, boost::shared_ptr<SlineRenderOptions>, bases<LineRenderOptions>, boost::noncopyable>("SlineRenderOptions")
+    .def(init<const SlineRenderOptions&>())
     .def("SetSplineDetail", &SlineRenderOptions::SetSplineDetail)
     .def("GetSplineDetail", &SlineRenderOptions::GetSplineDetail)
   ;
 
   class_<CPKRenderOptions, boost::shared_ptr<CPKRenderOptions>, bases<RenderOptions>, boost::noncopyable>("CPKRenderOptions")
+    .def(init<const CPKRenderOptions&>())
     .def("SetSphereDetail", &CPKRenderOptions::SetSphereDetail)
     .def("GetSphereDetail", &CPKRenderOptions::GetSphereDetail)
     .def("SetCPKMode", &CPKRenderOptions::SetCPKMode)
@@ -80,6 +87,7 @@ void export_RenderOptions()
   ;
 
   class_<CustomRenderOptions, boost::shared_ptr<CustomRenderOptions>, bases<RenderOptions>, boost::noncopyable>("CustomRenderOptions")
+    .def(init<const CustomRenderOptions&>())
     .def("SetSphereDetail", &CustomRenderOptions::SetSphereDetail)
     .def("GetSphereDetail", &CustomRenderOptions::GetSphereDetail)
     .def("SetArcDetail", &CustomRenderOptions::SetArcDetail)
@@ -96,6 +104,7 @@ void export_RenderOptions()
   ;
 
   class_<CartoonRenderOptions, boost::shared_ptr<CartoonRenderOptions>, bases<RenderOptions>, boost::noncopyable>("CartoonRenderOptions")
+    .def(init<const CartoonRenderOptions&>())
     .def(init<optional<bool> >())
     .def("SetSplineDetail", &CartoonRenderOptions::SetSplineDetail)
     .def("GetSplineDetail", &CartoonRenderOptions::GetSplineDetail)
@@ -130,6 +139,7 @@ void export_RenderOptions()
   ;
   
   class_<TraceRenderOptions, boost::shared_ptr<TraceRenderOptions>, bases<RenderOptions>, boost::noncopyable>("TraceRenderOptions")
+    .def(init<const TraceRenderOptions&>())
     .def("SetArcDetail", &TraceRenderOptions::SetArcDetail)
     .def("GetArcDetail", &TraceRenderOptions::GetArcDetail)
     .def("SetNormalSmoothFactor", &TraceRenderOptions::SetNormalSmoothFactor)
diff --git a/modules/gui/pymod/scene/render_mode_widget.py b/modules/gui/pymod/scene/render_mode_widget.py
index 271ae6699b22c4c90a06876e5867e44f61b2f229..17f099223a7bc1f0cc762fc3028998491c53481f 100644
--- a/modules/gui/pymod/scene/render_mode_widget.py
+++ b/modules/gui/pymod/scene/render_mode_widget.py
@@ -60,17 +60,17 @@ class RenderModeWidget(QtGui.QWidget):
       entity = scene_selection.GetViewEntity()
       self.entities_.add(entity)
     
-    for entity in self.entities_:
+    if len(self.entities_)>0:
+      entity = self.entities_.pop()
       self.options_=entity.GetOptions(self.GetRenderMode())
-      self.entities_.remove(entity)
-      break
-    self.UpdateGui(self.options_)
-    
-    QtGui.QWidget.setEnabled(self,True)
+      self.UpdateGui(self.options_)
+      QtGui.QWidget.setEnabled(self,True)
+    else:
+      QtGui.QWidget.setEnabled(self,False)
     
   def ApplyOptions(self):
     for entity in self.entities_:
-      entity.SetOptions(self.GetRenderMode(),self.options_)
+      entity.ApplyOptions(self.GetRenderMode(), self.GetOptions())
 
   def GetOptions(self):
     return self.options_
\ No newline at end of file