diff --git a/modules/gfx/src/scene.cc b/modules/gfx/src/scene.cc
index b5f4bcd605e98190cdef3663de0c4018af1583ba..7afa52997ca0169a722887f0c11285d93a14f08a 100644
--- a/modules/gfx/src/scene.cc
+++ b/modules/gfx/src/scene.cc
@@ -472,11 +472,6 @@ void Scene::Unregister(GLWinBase* win)
   win_=0;
 }
 
-template <typename ACTION>
-void Scene::NotifyObservers(const ACTION& action) {
-  std::for_each(observers_.begin(), observers_.end(), action);
-}
-
 namespace {
   struct FindNode: public GfxNodeVisitor {
     FindNode(const String& n): nam(n), node() {}
diff --git a/modules/gfx/src/scene.hh b/modules/gfx/src/scene.hh
index b1a5fa4ba4541b7d5f595308dbce16f89779f254..87a6760551520bbcd017f6a82db785043ab154e0 100644
--- a/modules/gfx/src/scene.hh
+++ b/modules/gfx/src/scene.hh
@@ -350,8 +350,11 @@ protected:
   void RenderModeChanged(const String& name);
 
 private:  
+
   template <typename ACTION>
-  void NotifyObservers(const ACTION& action);  
+  void NotifyObservers(const ACTION& action) {
+    std::for_each(observers_.begin(), observers_.end(), action);
+  }
   Scene();
   Scene(const Scene&) {}
   Scene& operator=(const Scene&) {return *this;}