diff --git a/CMakeLists.txt b/CMakeLists.txt
index 1883733bbb9302452b77318ccefce5d1b89afce9..10866526532bb2b29e149995a69d216229b7382f 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -97,9 +97,7 @@ IF(NOT CLIENT_ONLY)
   # }}}
 
   # {{{ Set list of headers
-  SET (${PROJECT_NAME}_HEADERS
-    ${CMAKE_SOURCE_DIR}/include/gepetto/viewer/corba/server.hh
-    ${CMAKE_SOURCE_DIR}/include/gepetto/viewer/corba/fwd.hh
+  LIST(APPEND ${PROJECT_NAME}_HEADERS
     ${CMAKE_SOURCE_DIR}/include/gepetto/gui/omniorb/url.hh
     )
   # }}}
diff --git a/doc/Doxyfile.extra.in b/doc/Doxyfile.extra.in
index 6bcde28abc701b502cd7194b531b09459bd669d6..4521bc43ad0e381806b91d482f45bd1dc90b5db6 100644
--- a/doc/Doxyfile.extra.in
+++ b/doc/Doxyfile.extra.in
@@ -1,13 +1,9 @@
-FILE_PATTERNS   = *.idl *.hh *.py *.idl *.dox
+FILE_PATTERNS   = *.idl *.hh *.py *.idl
 
 INPUT           = @CMAKE_SOURCE_DIR@/include    \
                   @CMAKE_SOURCE_DIR@/idl        \
                   @CMAKE_SOURCE_DIR@/plugins    \
-                  @CMAKE_SOURCE_DIR@/pyplugins  \
                   @CMAKE_SOURCE_DIR@/src/gepetto\
                   @CMAKE_SOURCE_DIR@/doc
 
 EXAMPLE_PATH    = @CMAKE_SOURCE_DIR@/examples
-LAYOUT_FILE     = @CMAKE_SOURCE_DIR@/doc/layout.xml
-
-TAGFILES        += @QT_TAGFILES@
diff --git a/doc/cmake.dox b/doc/cmake.dox
deleted file mode 100644
index 1b9781e96c55766ec8528efd686698e141594263..0000000000000000000000000000000000000000
--- a/doc/cmake.dox
+++ /dev/null
@@ -1,70 +0,0 @@
-/**
-
-\defgroup gepetto_viewer_corba_cmake_macros CMake macros
-\{
-
-\brief
-
-Here are some details on how to build and install plugins with CMake.
-
-\par Get the macro.
-
-\code{.py}
-# Tells pkg-config to read qtversion and cmake_plugin from pkg config file.
-LIST(APPEND PKG_CONFIG_ADDITIONAL_VARIABLES qtversion cmake_plugin)
-
-ADD_REQUIRED_DEPENDENCY("gepetto-viewer-corba")
-
-# Variable GEPETTO_VIEWER_CORBA_QTVERSION contains something like 4.8.1 or 5.2.1
-
-# Include macro GEPETTO_GUI_PLUGIN
-INCLUDE(${GEPETTO_VIEWER_CORBA_PREFIX}/${GEPETTO_VIEWER_CORBA_CMAKE_PLUGIN})
-\endcode
-
-\par Declare a C++ plugin:
-
-\code{.py}
-GEPETTO_GUI_PLUGIN(pluginskeleton
-  # Use this option only if you write a plugin within
-  # gepetto-viewer-corba package
-  # INSIDE_GEPETTO_VIEWER_CORBA
-
-  # Whether to use Qt4 or Qt5
-  ${QT4}
-
-  # List of headers that need not to be moced.
-  HEADERS_NO_MOC
-
-  # List of headers to be moced
-  HEADERS
-  plugin.hh
-
-  # List of Qt forms
-  FORMS
-
-  # List of Qt resources
-  RESOURCES
-
-  # List of source files
-  SOURCES
-  plugin.cc
-
-  # List of dependencies to be given to TARGET_LINK_LIBRARIES
-  LINK_DEPENDENCIES
-
-  # List of dependencies to be given to PKG_CONFIG_USE_DEPENDENCY
-  PKG_CONFIG_DEPENDENCIES
-  )
-\endcode
-
-\par Declare a Python plugin:
-
-\code{.py}
-# pythonfile refers to the path to .py file from a
-# path of PYTHONPATH
-GEPETTO_GUI_PYPLUGIN (pythonfile)
-\endcode
-
-\}
-
-*/
diff --git a/doc/footer.html b/doc/footer.html
deleted file mode 100644
index 5a2c5ccbaa9d02fb4215a4d188b8654b62cdef81..0000000000000000000000000000000000000000
--- a/doc/footer.html
+++ /dev/null
@@ -1,10 +0,0 @@
-<br><br>
-<hr>
-<center>
-  <img src="$relpath$pictures/footer.jpg" height="100" alt="footer">
-  <br>hpp-corbaserver library documentation</br>
-</center>
-<hr>
-</center>
-</body>
-</html>
diff --git a/doc/header.html b/doc/header.html
deleted file mode 100644
index 41c1d88fd7142431ffce46e7132ca3f3735ab8f0..0000000000000000000000000000000000000000
--- a/doc/header.html
+++ /dev/null
@@ -1,6 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
-<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
-<title>$title</title>
-<link href="$relpath$tabs.css" rel="stylesheet" type="text/css">
-<link href="$relpath$doxygen.css" rel="stylesheet" type="text/css">
-</head><body>
diff --git a/doc/main.hh b/doc/main.hh
index db31f10b2a38a9db94f58bc8257ddadfbeedeff2..068709872252dc9da01d8734eca5bec25a0c50c9 100644
--- a/doc/main.hh
+++ b/doc/main.hh
@@ -1,80 +1,23 @@
 /**
 
-\mainpage Gepetto Viewer
+\mainpage CORBA interface of Gepetto Viewer
 
-This package provides a graphical user interface to visualize robots. There are
-two compatible interfaces to interact with the interface.
-\li the CORBA interface with Python and C++ clients.
-\li the graphical user interface.
+This package implements a CORBA interface to \ref gepetto_viewer_index_html "gepetto-viewer".
+Refers to its doc for further details on the interface itself.
 
-To start the interface, use
-\code{bash} gepetto-gui \endcode
+\par Basic usage
 
-To get some help on the command line options, use
-\code{bash} gepetto-gui --help \endcode
-
-To get command line completion for `gepetto-gui` command, see package
-https://github.com/humanoid-path-planner/hpp-tools.
-
-\section gepetto_gui_corba CORBA interface
-
-The IDL interface of the server is defined by gepetto::corbaserver::GraphicalInterface.
+The IDL interface of the viewer is defined by gepetto::corbaserver::GraphicalInterface.
 
+To create a client to the interface, you may use the following code.
 \code{py}
-from gepetto.corbaserver import Client
-client = Client ()
-# open a new window
-client.gui.createWindow ("w")
+from gepetto.corbaserver import gui_client
+# Create a client to the GUI, a window name "w" and a group node "w".
+# dont_raise if the GUI is not available (in which case gui will be None).
+gui = gui_client(windowName = "w", dont_raise=True)
 # refer to the idl interface to control gepetto-viewer.
 \endcode
 
-\section gepetto_gui_ui Graphical user interface
-
-\par Configuration files
-
-The interface can be customized using a few setting files.
-See gepetto::gui::Settings::readSettingFile for more details on configuration files.
-
-To generate a new configuration use:
-\code{bash} gepetto-gui -c newConfigName -g \endcode
-
-To use the configuration *config*:
-\code{bash} gepetto-gui -c newConfigName \endcode
-
-\par Extending the interface
-
-There are two ways of extending the interface: Python and C++. Python
-plugins are easier to write than C++ plugins, but they do not offer
-full control of the interface (yet).
-
-See the \ref pluginlist for some examples.
-Building and installing plugins is made easy with \ref gepetto_viewer_corba_cmake_macros.
-
-- *Python plugins*
-  See the documentation of gepetto::gui::PythonWidget for instructions
-  and examples of Python plugin usage.
-
-  The Python console is a good tool for debugging. The following variables
-  are accessible:
-  + \c mainWindow: gepetto::gui::MainWindow
-  + \c osg: the widget responsible for the first created window (class gepetto::gui::OSGWidget)
-
-- *C++ Plugin*
-  See documentation of gepetto::gui::PluginInterface,  for details on how to write a plugin.
-
-\defgroup pluginlist List of available plugins
-
-This is the list of available plugins. See each plugin to know how to activate it.
-
-\defgroup plugin Plugin interfaces
-\{
-Interface of C++ and Python plugins.
-
-  \defgroup plugin_cpp C++ Plugin API
-  Descriptions of the available interfaces.
-
-  \defgroup plugin_python Python plugin API
-  These slots are available for Python scripting in plugins.
-\}
+Extra features can be found in gepetto.corbaserver.tools.
 
 */
diff --git a/doc/pictures/archi.fig b/doc/pictures/archi.fig
deleted file mode 100644
index 01444ae0d16de164c2200320091d36e7dbacaefc..0000000000000000000000000000000000000000
--- a/doc/pictures/archi.fig
+++ /dev/null
@@ -1,81 +0,0 @@
-#FIG 3.2
-Portrait
-Center
-Metric
-Letter  
-100.00
-Single
--2
-1200 2
-6 7105 319 10699 967
-3 2 1 1 0 7 50 -1 -1 4.000 0 1 0 3
-	3 1 1.00 56.20 112.40
-	 7105 658 8135 396 9128 967
-	 0.000 -1.000 0.000
-4 0 0 50 -1 0 12 0.0000 4 180 1740 8959 574 dynamic library loading\001
--6
-6 7535 4772 9456 5019
-2 1 1 1 0 7 50 -1 -1 4.000 0 0 -1 1 0 2
-	3 1 1.00 56.20 112.40
-	 7535 4991 9456 4991
-4 0 0 50 -1 0 12 0.0000 4 180 1815 7638 4907 compilation dependence\001
--6
-2 1 0 2 0 7 50 -1 -1 0.000 0 0 -1 0 0 2
-	 1351 1818 2192 1818
-2 1 0 2 0 7 50 -1 -1 0.000 0 0 -1 0 0 2
-	 1351 2064 2192 2064
-2 1 0 2 0 7 50 -1 -1 0.000 0 0 -1 0 0 3
-	 2106 1724 2368 1923 2131 2136
-2 2 0 2 0 7 50 -1 -1 0.000 0 0 7 0 0 5
-	 2397 4277 4293 4277 4293 4951 2397 4951 2397 4277
-2 2 0 2 0 7 50 -1 -1 0.000 0 0 7 0 0 5
-	 2397 3176 4293 3176 4293 3851 2397 3851 2397 3176
-2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2
-	 2385 1687 4296 1687
-2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2
-	 3294 1687 3294 2493
-2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2
-	 2385 1950 3294 1950
-2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2
-	 2376 2221 3284 2221
-2 2 0 2 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
-	 5291 2493 7211 2493 7211 1369 5291 1369 5291 2493
-2 1 0 1 0 7 50 -1 -1 4.000 0 0 -1 1 0 3
-	3 1 1.00 56.20 112.40
-	 4293 3497 6213 3497 6213 2504
-2 1 1 1 0 7 50 -1 -1 4.000 0 0 -1 1 0 2
-	3 1 1.00 56.20 112.40
-	 3343 2504 3343 3178
-2 1 1 1 0 7 50 -1 -1 4.000 0 0 -1 1 0 2
-	3 1 1.00 56.20 112.40
-	 3343 3843 3343 4265
-2 2 0 2 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
-	 2385 2493 4306 2493 4306 1369 2385 1369 2385 2493
-2 2 1 1 0 7 50 -1 -1 4.000 0 0 -1 0 0 5
-	 1998 949 4734 949 4734 5052 1998 5052 1998 949
-2 2 0 2 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
-	 8826 2493 10746 2493 10746 1369 8826 1369 8826 2493
-2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 1 0 2
-	3 1 1.00 60.00 120.00
-	 7212 1913 8824 1913
-2 2 1 1 0 7 50 -1 -1 4.000 0 0 -1 0 0 5
-	 1835 769 7355 769 7355 5159 1835 5159 1835 769
-2 1 1 1 0 7 50 -1 -1 4.000 0 0 -1 1 0 2
-	3 1 1.00 60.00 120.00
-	 5295 1919 4305 1919
-2 1 1 1 0 7 50 -1 -1 4.000 0 0 -1 0 1 3
-	3 1 1.00 60.00 120.00
-	 4295 4609 9885 4609 9885 2499
-4 1 0 50 -1 0 14 0.0000 4 150 1080 3324 4694 KineoWorks\001
-4 0 0 50 -1 0 12 0.0000 4 90 480 2507 1865 server\001
-4 0 0 50 -1 0 12 0.0000 4 135 420 2507 2399 client\001
-4 0 0 50 -1 0 12 0.0000 4 180 735 2507 2146 clientHpp\001
-4 0 0 50 -1 0 14 0.0000 4 150 1215 2092 1202 Corba module\001
-4 1 0 50 -1 0 14 0.0000 4 195 1200 6162 1622 Kpp Interface\001
-4 1 0 50 -1 0 14 0.0000 4 150 1380 3256 1622 Corba Interface\001
-4 1 0 50 -1 0 14 0.0000 4 195 990 3294 3579 HPP library\001
-4 1 0 50 -1 0 14 0.0000 4 150 1560 9776 1622 KineoPathPlanner\001
-4 0 0 50 -1 0 12 0.0000 4 135 1215 7476 1793 initializeModule\001
-4 0 0 50 -1 0 12 0.0000 4 135 450 1376 1997 Corba\001
-4 0 0 50 -1 0 14 0.0000 4 150 1065 5012 1092 KPP module\001
-4 0 0 50 -1 0 12 0.0000 4 135 1350 4806 3406 send notifications\001
diff --git a/doc/pictures/archi.pdf b/doc/pictures/archi.pdf
deleted file mode 100644
index badaea5bf50bdaaa1d9a7a437b7f566db309cb12..0000000000000000000000000000000000000000
Binary files a/doc/pictures/archi.pdf and /dev/null differ
diff --git a/doc/pictures/archi.png b/doc/pictures/archi.png
deleted file mode 100644
index 582d75a0d0dd4aac8860c7408f8aebb95e659903..0000000000000000000000000000000000000000
Binary files a/doc/pictures/archi.png and /dev/null differ
diff --git a/doc/pictures/footer.jpg b/doc/pictures/footer.jpg
deleted file mode 100644
index 377681b20575b32c765e0ad9403723a0e3ea5c75..0000000000000000000000000000000000000000
Binary files a/doc/pictures/footer.jpg and /dev/null differ
diff --git a/idl/gepetto/viewer/graphical-interface.idl b/idl/gepetto/viewer/graphical-interface.idl
index 9755616fa0f016b3ed115c8c5dbfee696befad24..09f4fdcf9fce9fa43ad8d0188f015ec91eb3803f 100644
--- a/idl/gepetto/viewer/graphical-interface.idl
+++ b/idl/gepetto/viewer/graphical-interface.idl
@@ -21,7 +21,7 @@ typedef float Transform [7];
 typedef float Vector2 [2];
 typedef float Position [3];
 typedef float Color [4];
-typedef unsigned long WindowID;
+typedef string WindowID;
 typedef sequence <string> Names_t; /// Sequence of names
 typedef sequence<float> floatSeq;
 typedef sequence<Position> PositionSeq;
@@ -46,35 +46,38 @@ typedef sequence<Transform> TransformSeq;
     /// \anchor idl_windows_and_scenes
     /// \{
 
-    /// Create a new window.
-    /// \param input name : name of the new window.
-    /// return the ID of the newly create window.
-    unsigned long createWindow(in string name) raises (Error);
-    unsigned long getWindowID (in string name) raises (Error);
+    /// Create a new window if it does not already exists.
+    /// \param name : name of the new window.
+    /// return the value provided as input argument.
+    WindowID createWindow(in string name) raises (Error);
+
+    /// \deprecated Line `windowId = gui.getWindowID(name)` can be replaced
+    ///             by `windowId = name`.
+    WindowID getWindowID (in string name) raises (Error);
     
     /// change the background color1
-    /// \param input windowId : ID of the window
-    /// \param input RGBAcolor : desired color
-    boolean setBackgroundColor1(in unsigned long windowId,in Color RGBAcolor);
+    /// \param wid : ID of the window
+    /// \param RGBAcolor : desired color
+    boolean setBackgroundColor1(in WindowID wid,in Color RGBAcolor);
     
     /// change the background color2
-    /// \param input windowId : ID of the window
-    /// \param input RGBAcolor : desired color
-    boolean setBackgroundColor2(in unsigned long windowId,in Color RGBAcolor);
+    /// \param wid : ID of the window
+    /// \param RGBAcolor : desired color
+    boolean setBackgroundColor2(in WindowID wid,in Color RGBAcolor);
 
     /// Create a group node.
-    /// \param input sceneName : name of the group.
+    /// \param sceneName : name of the group.
     void createScene(in string sceneName) raises (Error);
 
     /// Create a group node and a GroudNode ("sceneName/floor") as child
-    /// \param input sceneName : name of the group
+    /// \param sceneName : name of the group
     void createSceneWithFloor(in string sceneName) raises (Error);
 
     /// Add groupNode sceneName to the WindowManager windowName so
     /// sceneName and all its children will be displayed in the window windowName.
-    /// \param input sceneName : name of the groupNode.
-    /// \param input windowId : ID of rhe window.
-    boolean addSceneToWindow(in string sceneName, in unsigned long windowId) raises (Error);
+    /// \param sceneName : name of the groupNode.
+    /// \param wid : ID of rhe window.
+    boolean addSceneToWindow(in string sceneName, in WindowID wid) raises (Error);
 
     /// \}
 
@@ -83,122 +86,114 @@ typedef sequence<Transform> TransformSeq;
     /// \{
 
     /// create a floor called floorName.
-    /// \param input floorName : name of the floor.
+    /// \param floorName : name of the floor.
     boolean addFloor(in string floorName) raises (Error);
 
     /// create a box called boxName.
-    /// \param input boxName : name of the box.
-    /// \param input boxSize1 : lenght of the box (x axis).
-    /// \param input boxSize2 : lenght of the box (y axis).
-    /// \param input boxSize3 : lenght of the box (z axis).
-    /// \param input RGBAcolor : Color of the box.
+    /// \param boxName : name of the box.
+    /// \param boxSize1 : lenght of the box (x axis).
+    /// \param boxSize2 : lenght of the box (y axis).
+    /// \param boxSize3 : lenght of the box (z axis).
+    /// \param RGBAcolor : Color of the box.
     boolean addBox(in string boxName, in float boxSize1, in float boxSize2, in float boxSize3, in Color RGBAcolor) raises (Error);
 
     /// create a box called CapsuleName.
-    /// \param input CapsuleName : name of the capsule.
-    /// \param input radius : radius of the capsule.
-    /// \param input height : lenght of the segment that generates the capsule.
-    /// \param input RGBAcolor : Color of the capsule.
-    boolean addCapsule(in string capsuleName, in float radius, in float height, in Color RGBAcolorid) raises (Error);
+    /// \param name : name of the capsule.
+    /// \param radius : radius of the capsule.
+    /// \param height : lenght of the segment that generates the capsule.
+    /// \param RGBAcolor : Color of the capsule.
+    boolean addCapsule(in string name, in float radius, in float height, in Color RGBAcolor) raises (Error);
 
 
     /// create a box called CapsuleName.
-    /// \param input CapsuleName : name of the arrow.
-    /// \param input radius : radius of the arrow
-    /// \param input length : lenght of the arrow 
-    /// \param input RGBAcolor : Color of the capsule.
-    boolean addArrow(in string arrowName, in float radius, in float length, in Color RGBAcolorid) raises (Error);
+    /// \param name : name of the arrow.
+    /// \param radius : radius of the arrow
+    /// \param length : lenght of the arrow 
+    /// \param RGBAcolor : Color of the capsule.
+    boolean addArrow(in string name, in float radius, in float length, in Color RGBAcolor) raises (Error);
 
-    boolean addRod(in string rodName, in Color RGBAcolorid, in float radius, in float totalLength,in short maxCapsule) raises (Error);
+    boolean addRod(in string rodName, in Color RGBAcolor, in float radius, in float totalLength,in short maxCapsule) raises (Error);
     
     /// resize the capsule CapsuleName.
-    /// \param input CapsuleName : name of the capsule.
-    /// \param input height : lenght of the segment that generates the capsule.
+    /// \param CapsuleName : name of the capsule.
+    /// \param height : lenght of the segment that generates the capsule.
     boolean resizeCapsule(in string capsuleName,in float height) raises (Error);
 
     boolean resizeArrow(in string capsuleName,in float radius, in float length) raises (Error);
 
     /// create a node to display a mesh (works for .dae, .obj and some other formats)
-    /// \param input meshName : name of the new meshNode.
-    /// \param input meshPath : full path to the mesh file.
+    /// \param meshName : name of the new meshNode.
+    /// \param meshPath : full path to the mesh file.
     boolean addMesh(in string meshName, in string meshPath) raises (Error);
 
     /// Remove light sources from mesh
-    /// \param input meshName : name of the new meshNode.
+    /// \param meshName : name of the new meshNode.
     void removeLightSources(in string meshName) raises (Error);
 
-    /// create a node to display a mesh (works for .dae, .obj and some other formats)
-    /// \param input meshName : name of the new meshNode.
-    /// \param input meshPath : full path to the mesh file.
-    boolean addCone(in string coneName, in float radius, in float height, in Color RGBAcolor) raises (Error);
-
-    /// create a Cyllinder called cylinderName
-    /// \param input cylinderName : name of the cylinder.
-    /// \param input radius : radius of the cylinder.
-    /// \param input height : lenght of the cylinder.
-    /// \param input RGBAcolor : color of the cylinder.
+    /// create a Cone
+    boolean addCone(in string name, in float radius, in float height, in Color RGBAcolor) raises (Error);
+
+    /// create a Cylinder
     boolean addCylinder(in string cylinderName, in float radius, in float height, in Color RGBAcolor) raises (Error);
 
-    /// create a sphere called sphereName
-    /// \param input sphereName : name of the sphere.
-    /// \param input radius : radius of the sphere.
-    /// \param input RGBAcolor : color of the sphere.
+    /// create a Sphere
     boolean addSphere(in string sphereName, in float radius, in Color RGBAcolor) raises (Error);
 
-    /// create a light called lightName
-    /// \param input lightName : name of the light.
-    /// \param input radius : radius of the bulb showing the light.
-    /// \param input RGBAcolor : color of the light.
+    /// create a light
+    /// \param lightName : name of the light.
+    /// \param wid : ID of the window.
+    /// \param radius : radius of the bulb showing the light.
+    /// \param RGBAcolor : color of the light.
     boolean addLight(in string lightName, in WindowID wid, in float radius, in Color RGBAcolor) raises (Error);
 
     /// create a line called lineName.
-    /// \param input lineName : name of the line.
-    /// \param input pos1 : position one extremity of the line.
-    /// \param input pos2 : position the other extremity of the line.
-    /// \param input RGBAcolor : color of the line.
+    /// \param lineName : name of the line.
+    /// \param pos1 : position one extremity of the line.
+    /// \param pos2 : position the other extremity of the line.
+    /// \param RGBAcolor : color of the line.
     boolean addLine(in string lineName, in Position pos1, in Position pos2, in Color RGBAcolor) raises (Error);
     
     /// change starting point position of a line.
-    /// \param input lineName : name of the line.
-    /// \param input pos1 : position of the first extremity of the line.
+    /// \param lineName : name of the line.
+    /// \param pos1 : position of the first extremity of the line.
     boolean setLineStartPoint(in string lineName, in Position pos1) raises (Error);
 
     /// change terminal point position of a line.
-    /// \param input lineName : name of the line.
-    /// \param input pos2 : position of the second extremity of the line.
+    /// \param lineName : name of the line.
+    /// \param pos2 : position of the second extremity of the line.
     boolean setLineEndPoint(in string lineName, in Position pos2) raises (Error);
     
     /// change extremity positions of a line.
-    /// \param input lineName : name of the line.
-    /// \param input pos1 : position one extremity of the line.
-    /// \param input pos2 : position of the second extremity of the line.
+    /// \param lineName : name of the line.
+    /// \param pos1 : position one extremity of the line.
+    /// \param pos2 : position of the second extremity of the line.
     boolean setLineExtremalPoints(in string lineName, in Position pos1, in Position pos2) raises (Error);
     
     /// create a curve called curveName.
     /// The curve is the graph of the piecewise linear interpolation between each consecutive pos.
-    /// \param input lineName : name of the line.
-    /// \param input pos : waypoints of the curve.
-    /// \param input RGBAcolor : color of the line.
-    boolean addCurve(in string curveName, in PositionSeq pos, in Color RGBAcolor) raises (Error);
+    /// \param name : name of the line.
+    /// \param pos : waypoints of the curve.
+    /// \param RGBAcolor : color of the line.
+    boolean addCurve(in string name, in PositionSeq pos, in Color RGBAcolor) raises (Error);
     
     /// set points of a curve called curveName.
-    /// \param input lineName : name of the line.
-    /// \param input pos : waypoints of the curve.
-    boolean setCurvePoints(in string curveName, in PositionSeq pos) raises (Error);
+    /// \param name : name of the line.
+    /// \param pos : waypoints of the curve.
+    boolean setCurvePoints(in string name, in PositionSeq pos) raises (Error);
 
     /// \param mode The list of possible GL modes is provided in
     ///             gepetto::viewer::WindowsManager::setCurveMode.
     ///             From the GL modes, remove "GL_" and put it lower case.
-    boolean setCurveMode (in string curveName, in string mode) raises (Error);
+    boolean setCurveMode (in string name, in string mode) raises (Error);
 
     boolean setCurvePointsSubset (in string curveName, in long first, in long count) raises (Error);
 
     boolean setCurveLineWidth (in string curveName, in float width) raises (Error);
 
     /// create a four vertices face called faceName.
-    /// \param input faceName : name of the face.
-    /// \param input pos1, pos2, pos3, pos4 : position of the vertices.
-    /// \param input RGBAcolor : color of the face.
+    /// \param faceName : name of the face.
+    /// \param pos1, pos2, pos3, pos4 : position of the vertices.
+    /// \param RGBAcolor : color of the face.
     boolean addSquareFace(in string faceName, in Position pos1, in Position pos2, in Position pos3, in Position pos4, in Color RGBAcolor) raises (Error);
 
     /// Set a texture to a face
@@ -208,37 +203,37 @@ typedef sequence<Transform> TransformSeq;
     boolean setTexture (in string nodeName, in string filename) raises (Error);
 
     /// create a three vertices face called faceName.
-    /// \param input faceName : name of the face.
-    /// \param input pos1, pos2, pos3 : position of the vertices.
-    /// \param input RGBAcolor : color of the face.
+    /// \param faceName : name of the face.
+    /// \param pos1, pos2, pos3 : position of the vertices.
+    /// \param RGBAcolor : color of the face.
     boolean addTriangleFace(in string faceName, in Position pos1, in Position pos2, in Position pos3, in Color RGBAcolor) raises (Error);
 
 
 		// Add a sphere with xyz axis
 		// The colors are x=red, y=green, z=blue (xyz=RGB)
-		// \param input nodeName : name of the node
-		// \param input RGBAcolor : color of the sphere
-		// \param input radius : radius of the sphere
-		// \param input sizeAxis : size of the axis (proportionnaly to the sphere radius, size axis = 1 -> axis are radius*4 in length and radius/4 in radius)
+		// \param nodeName : name of the node
+		// \param RGBAcolor : color of the sphere
+		// \param radius : radius of the sphere
+		// \param sizeAxis : size of the axis (proportionnaly to the sphere radius, size axis = 1 -> axis are radius*4 in length and radius/4 in radius)
 		boolean addXYZaxis(in string nodeName, in Color RGBAcolor,in float radius,in float sizeAxis) raises(Error);
 
 		// Add an empty roadmap to the scene
-	  // \param input nameCorba : name of the roadmap
-	  // \param input RGBAcolorNode : color of the sphere
-	  // \param input radius : radius of the sphere
-	  // \param input sizeAxis :size of the axis (proportionnaly to the sphere radius, size axis = 1 -> axis are radius*4 in length and radius/4 in radius)
-	  // \param input RGBAcolorEdge : color of the edges
+	  // \param nameCorba : name of the roadmap
+	  // \param RGBAcolorNode : color of the sphere
+	  // \param radius : radius of the sphere
+	  // \param sizeAxis :size of the axis (proportionnaly to the sphere radius, size axis = 1 -> axis are radius*4 in length and radius/4 in radius)
+	  // \param RGBAcolorEdge : color of the edges
     boolean createRoadmap(in string nameCorba,in Color RGBAcolorNode, in float radius, in float sizeAxis, in Color RGBAcolorEdge) raises(Error);
 
 		// Add an edge to the roadmap
-	  // \param input nameRoadmap : name of the roadmap
-	  // \param input posFrom : position of the beginning of the edge
-	  // \param input posTo : position of the end of the edge (not oriented edge, order doesn't matter)
+	  // \param nameRoadmap : name of the roadmap
+	  // \param posFrom : position of the beginning of the edge
+	  // \param posTo : position of the end of the edge (not oriented edge, order doesn't matter)
     boolean addEdgeToRoadmap(in string nameRoadmap, in Position posFrom, in Position posTo)raises(Error);
 
 		// Add a node to the roadmap
-	  // \param input nameRoadmap : name of the roadmap
-	  // \param input configuration : configuration of the node 
+	  // \param nameRoadmap : name of the roadmap
+	  // \param configuration : configuration of the node 
     boolean addNodeToRoadmap(in string nameRoadmap, in Transform configuration)raises(Error);
 
     /// Create a node from an urdf file
@@ -282,7 +277,7 @@ typedef sequence<Transform> TransformSeq;
       raises (Error);
 
     /// create a groupNode called groupName
-    /// \param input groupName : name of the group.
+    /// \param groupName : name of the group.
     boolean createGroup(in string groupName) raises (Error);
 
     /// \}
@@ -300,15 +295,11 @@ typedef sequence<Transform> TransformSeq;
     ///        are deleted recursively.
     void deleteNode (in string nodeName, in boolean all) raises (Error);
 
-    /// Print names of nodes on the SceneViewer-corbaserver terminal
-    /// and return them in an array
-    /// \return the list of node names contained in the scene
+    /// Returns the name of all the nodes.
     Names_t getNodeList() raises (Error);
 
-    /// Print names of a group nodes on the SceneViewer-corbaserver terminal
-    /// and return them in an array
-    /// \param input name : name of the new window.
-    /// \return the list of node names contained in the group
+    /// Returns the name of the Group nodes contained in a group
+    /// \param group : name of the group.
     Names_t getGroupNodeList(in string group) raises (Error);
 
     /// Get the list of group (i.e. scene) nodes
@@ -318,13 +309,13 @@ typedef sequence<Transform> TransformSeq;
     Names_t getWindowList() raises (Error);
 
     /// set a node as child to a group node.
-    /// \param input nodeName : name of the child node.
-    /// \param input groupName : name of the mother node (=group node).
+    /// \param nodeName : name of the child node.
+    /// \param groupName : name of the mother node (=group node).
     boolean addToGroup(in string nodeName, in string groupName) raises (Error);
 
     /// remove the node from the child list of a group node.
-    /// \param input nodeName : name of the child node.
-    /// \param input groupName : name of the mother node (=group node).
+    /// \param nodeName : name of the child node.
+    /// \param groupName : name of the mother node (=group node).
     boolean removeFromGroup(in string nodeName, in string groupName) raises (Error);
 
     /// \}
@@ -334,8 +325,8 @@ typedef sequence<Transform> TransformSeq;
     /// \{
 
     /// Set a new configuration to a node. THIS CONFIGURATION WILL AFFECTIVE ONLY AFTER CALLING REFRESH FUNCTION!!!
-    /// \param input nodeName : name of the node.
-    /// \param input configuration : Float[7] new configuration.
+    /// \param nodeName : name of the node.
+    /// \param configuration : Float[7] new configuration.
     boolean applyConfiguration(in string nodeName, in Transform configuration) raises (Error);
 
     /// Same as \ref applyConfiguration on a list of node name and configuration.
@@ -351,7 +342,7 @@ typedef sequence<Transform> TransformSeq;
     void setRefreshIsSynchronous (in boolean synchonous) raises (Error);
     
     /// Return the Position + Quaternion orientation of an object in the global frame
-    /// \param input nodeName : name of the node.
+    /// \param nodeName : name of the node.
     /// \return a length 7 array
     Transform getNodeGlobalTransform(in string nodeName) raises (Error);
 
@@ -363,51 +354,51 @@ typedef sequence<Transform> TransformSeq;
 
     /// Add Landmark at the center of a node
     /// The colors are x=red, y=green, z=blue (xyz=RGB).
-    /// \param input nodeName : name of the node
-    /// \param input size : lenght of axises.
+    /// \param nodeName : name of the node
+    /// \param size : lenght of axises.
     boolean addLandmark(in string nodeName, in float size) raises (Error);
 
     /// delete Landmark of a node.
-    /// \param input nodeName : name of the node
+    /// \param nodeName : name of the node
     boolean deleteLandmark(in string nodeName) raises (Error);
 
     /// get the static transform of the node
-    /// \param input nodeName : name of the node
+    /// \param nodeName : name of the node
     Transform getStaticTransform(in string nodeName) raises (Error);
     
     /// set the static transform of the node
-    /// \param input nodeName : name of the node
-    /// \param input configuration : static configuration of the node
+    /// \param nodeName : name of the node
+    /// \param configuration : static configuration of the node
     boolean setStaticTransform(in string nodeName, in Transform configuration) raises (Error);
 
     /// Change the visibility of a node. If this node is a group node, visibility mode will be apply to all children.
-    /// \param input nodeName : name of the node.
-    /// \param input visibilityMode : visibility mode can be "ON", "OFF" or "ALWAYS_ON_TOP".
+    /// \param nodeName : name of the node.
+    /// \param visibilityMode : visibility mode can be "ON", "OFF" or "ALWAYS_ON_TOP".
     boolean setVisibility(in string nodeName, in string visibilityMode) raises (Error);
     
-       /// Change the scale of a node. 
-    /// \param input nodeName : name of the node.
-    /// \param input scale : new scale  
+    /// Change the scale of a node.
+    /// \param nodeName : name of the node.
+    /// \param scale : new scale
     boolean setScale(in string nodeName, in Position scale) raises (Error);
     
-    /// Change the color of a node. 
-    /// \param input nodeName : name of the node.
-    /// \param input color : new color
+    /// Change the color of a node.
+    /// \param nodeName : name of the node.
+    /// \param color : new color
     boolean setColor(in string nodeName, in Color scale) raises (Error);
 
     /// Change wireframe mode of a node. If this node is a group node, wireframe mode will be apply to all children.
-    /// \param input nodeName : name of the node.
-    /// \param input wireframeMode : wiredframe mode can be "FILL", "WIREFRAME" or "FILL_AND_WIREFRAME".
+    /// \param nodeName : name of the node.
+    /// \param wireframeMode : wiredframe mode can be "FILL", "WIREFRAME" or "FILL_AND_WIREFRAME".
     boolean setWireFrameMode(in string nodeName, in string wireFrameMode) raises (Error);
 
     /// Change lighting mode of a node. If this node is a group node, lighting mode will be apply to all children.
-    /// \param input nodeName : name of the node.
-    /// \param input lightingMode : lighting mode can be "ON" or "OFF".
+    /// \param nodeName : name of the node.
+    /// \param lightingMode : lighting mode can be "ON" or "OFF".
     boolean setLightingMode(in string nodeName, in string lightingMode) raises (Error);
 
     /// Change the highlight status
-    /// \param input nodeName : name of the node.
-    /// \param input state : 0 for off, 1 or 2 for other things.
+    /// \param nodeName : name of the node.
+    /// \param state : 0 for off, 1 or 2 for other things.
     boolean setHighlight (in string nodeName, in long state) raises (Error);
 
     Names_t getPropertyNames(in string nodeName) raises (Error);
@@ -439,15 +430,15 @@ typedef sequence<Transform> TransformSeq;
 
     /// \name Export of scenes to images or to blender
     /// \anchor idl_export_of_scenes_to_images_or_to_blender
-    /// See \ref gepetto.gui.Plugin
+    /// See \ref gepetto.gui.blenderexport.Plugin
     /// \{
 
     void captureFrame (in WindowID wid, in string imageFilename) raises (Error);
 
     /// Start capturing a window into image files.
-    /// \param windowId the ID of the window
+    /// \param wid the ID of the window
     /// \param filename, extension image files will be
-    /// '<filename>_<sequence_number>.<extension>'
+    /// `<filename>_<sequence_number>.<extension>`
     ///
     /// To make a movie from the sequence of images, you can run:
     /// \code{.sh}
@@ -457,11 +448,11 @@ typedef sequence<Transform> TransformSeq;
     /// - \c libx264 is not installed by default. On ubuntu 12.04,
     ///   it is part of the package \c libavcodec-extra-53.
     /// - \c yuv420p is required only to enable support for old media players.
-    boolean startCapture (in unsigned long windowId, in string filename,
+    boolean startCapture (in WindowID wid, in string filename,
       in string extension) raises (Error);
 
     /// Stop the running capture of a window.
-    boolean stopCapture (in unsigned long windowId) raises (Error);
+    boolean stopCapture (in WindowID wid) raises (Error);
 
     /// Configure the capture of node transformation in YAML format
     /// \param filename file where to write.
@@ -486,7 +477,7 @@ typedef sequence<Transform> TransformSeq;
     boolean writeNodeFile (in string nodeName, in string filename) raises (Error);
 
     /// Write the nodes contained in the window to filename
-    boolean writeWindowFile (in unsigned long windowId, in string filename) raises (Error);
+    boolean writeWindowFile (in WindowID wid, in string filename) raises (Error);
 
     /// \}
 
@@ -495,31 +486,31 @@ typedef sequence<Transform> TransformSeq;
     /// \{
 
     /// Attach the camera to the Node nodeName in the WindowManager
-    /// pointed by windowId
+    /// pointed by wid
     /// If already attached, detach from the other node
-    /// \param input nodeName : name of the node
-    /// \param input windowId : ID of the window
-    boolean attachCameraToNode(in string nodeName, in unsigned long windowId) raises (Error);
+    /// \param nodeName : name of the node
+    /// \param wid : ID of the window
+    boolean attachCameraToNode(in string nodeName, in WindowID wid) raises (Error);
 
-    /// Detach the camera of WindowManager pointed by windowId
+    /// Detach the camera of WindowManager pointed by wid
     /// from any node
-    /// \param input windowId : ID of the window
-    boolean detachCamera(in unsigned long windowId) raises (Error);
+    /// \param wid : ID of the window
+    boolean detachCamera(in WindowID wid) raises (Error);
 
     /// get the matrix transform of the current position of the camera
     /// Camera frame convention (OpenSceneGraph): looking through the optic axis as a photographer,
     /// axis are: X -> right, Y -> up, Z -> behind
     /// It corresponds to Hartley and Zisserman's frame convention with a 180° rotation around the Y axis
-    /// \param input windowId : ID of the window
-    Transform getCameraTransform(in unsigned long windowId) raises (Error);
+    /// \param wid : ID of the window
+    Transform getCameraTransform(in WindowID wid) raises (Error);
 
     /// set the matrix transform of the current camera
     /// Camera frame convention (OpenSceneGraph): looking through the optic axis as a photographer,
     /// axis are: X -> right, Y -> up, Z -> behind
     /// It corresponds to Hartley and Zisserman's frame convention with a 180° rotation around the Y axis
-    /// \param input windowId : ID of the window
-    /// \param input configuration : the desired configuration of the camera
-    boolean setCameraTransform(in unsigned long windowId,in Transform configuration) raises (Error);
+    /// \param wid : ID of the window
+    /// \param configuration : the desired configuration of the camera
+    boolean setCameraTransform(in WindowID wid, in Transform configuration) raises (Error);
 
     // register a Node callback
     boolean registerNodeCallback (in NodeCallback cb) raises (Error);
diff --git a/include/gepetto/viewer/corba/fwd.hh b/include/gepetto/viewer/corba/fwd.hh
deleted file mode 100644
index 55fe502328e3b48c746d8ab2ba4c30482a44e90f..0000000000000000000000000000000000000000
--- a/include/gepetto/viewer/corba/fwd.hh
+++ /dev/null
@@ -1,38 +0,0 @@
-// Copyright (C) 2014 LAAS-CNRS.
-//
-// This file is part of the SceneViewer-corba.
-//
-// This software is provided "as is" without warranty of any kind,
-// either expressed or implied, including but not limited to the
-// implied warranties of fitness for a particular purpose.
-//
-// See the COPYING file for more information.
-
-#ifndef SCENEVIEWER_CORBASERVER_FWD_HH
-# define SCENEVIEWER_CORBASERVER_FWD_HH
-
-//FIXME: should be replaced by CORBA base types forward declarations.
-# include <omniORB4/CORBA.h>
-
-namespace gepetto {
-  namespace viewer {
-  namespace corba {
-    class Server;
- 
-    namespace impl
-    {
-      using CORBA::Boolean;
-      using CORBA::Double;
-      using CORBA::Short;
-      using CORBA::SystemException;
-      using CORBA::ULong;
-      using CORBA::UShort;
-
-      class GraphicalInterface;
-      class Server;
-    } // end of namespace impl
-  } // end of namespace corba.
-  } // end of namespace viewer.
-} // end of namespace gepetto.
-
-#endif //! SCENEVIEWER_CORBASERVER_FWD_HH
diff --git a/plugins/omniorbserver/omniorbthread.cc b/plugins/omniorbserver/omniorbthread.cc
index dcc2cb99c6cd9bbfdd9f516dd8217a719adf2f7a..99d7794ed9f60c6dd95360c0a0aca478c492b55b 100644
--- a/plugins/omniorbserver/omniorbthread.cc
+++ b/plugins/omniorbserver/omniorbthread.cc
@@ -16,7 +16,7 @@
 
 #include "omniorbthread.hh"
 
-#include <gepetto/viewer/corba/server.hh>
+#include "../../src/server.hh"
 #include <QDebug>
 
 #include <gepetto/gui/mainwindow.hh>
diff --git a/plugins/omniorbserver/omniorbthread.hh b/plugins/omniorbserver/omniorbthread.hh
index 2259ad6cfc6888e7c02192b0255f4bf77b2279ea..4af713859100ac4a94024d0a29aa8488ab17c19e 100644
--- a/plugins/omniorbserver/omniorbthread.hh
+++ b/plugins/omniorbserver/omniorbthread.hh
@@ -25,7 +25,7 @@
 #include <QElapsedTimer>
 
 #include "gepetto/gui/fwd.hh"
-#include "gepetto/viewer/corba/fwd.hh"
+#include "../../src/server.hh"
 
 class ViewerServerProcess : public QThread
 {
diff --git a/plugins/omniorbserver/plugin.cc b/plugins/omniorbserver/plugin.cc
index eb369462f6141d8cbd6d9e923250a90e4f6f8454..f92ffd7aef87bc9b408b0a24096122026a809439 100644
--- a/plugins/omniorbserver/plugin.cc
+++ b/plugins/omniorbserver/plugin.cc
@@ -18,12 +18,14 @@
 
 #include <plugin.hh>
 
+#include <omniORB4/CORBA.h>
+
 #include <gepetto/gui/mainwindow.hh>
 #include <gepetto/gui/settings.hh>
 #include <gepetto/gui/safeapplication.hh>
-#include <gepetto/viewer/corba/server.hh>
 
 #include <omniorbthread.hh>
+#include "../../src/server.hh"
 
 using namespace gepetto::gui;
 
diff --git a/src/conversions.hh b/src/conversions.hh
index 82a4738f3d54ea4833c99bb4ce4729deeea8c2da..3e72a9ef876d7d3fc899acb860afc99da8fa218a 100644
--- a/src/conversions.hh
+++ b/src/conversions.hh
@@ -12,7 +12,12 @@ namespace gepetto {
   namespace viewer {
   namespace corba {
     namespace impl {
-        typedef GraphicalInterface::WindowID WindowID;
+        using CORBA::Boolean;
+        using CORBA::Double;
+        using CORBA::Short;
+        using CORBA::SystemException;
+        using CORBA::ULong;
+        using CORBA::UShort;
 
         template <typename Input, typename Output>
           void to (const Input& in, Output& out) {
@@ -44,8 +49,8 @@ namespace gepetto {
 
         enum ArgType { STRING, STRING_LIST, OUT_STRING_LIST, COLOR,
           TRANSFORM, TRANSFORM_SEQ, POSITION, POSITION_SEQ,
-          FLOAT, SHORT, LONG, WINDOW_ID, BOOL, VOID,
-          GLMODE, VECTOR2
+          FLOAT, SHORT, LONG, BOOL, VOID,
+          GLMODE, VECTOR2, WINDOW_ID = STRING
         };
 
         template <int what> struct traits {};
@@ -138,13 +143,6 @@ namespace gepetto {
           static int op (const In_t& in) { return in; }
           static Ret_t ret (Out_t  in) { return in; }
         };
-        template <> struct traits<WINDOW_ID> {
-          typedef       WindowsManager::WindowID  Out_t;
-          typedef const WindowID  In_t;
-          typedef       WindowID  Ret_t;
-          static Out_t op  (In_t & in) { return in; }
-          static Ret_t ret (Out_t  in) { return in; }
-        };
         template <> struct traits<BOOL> {
           typedef bool In_t;
           typedef In_t Out_t;
diff --git a/src/gepetto/corbaserver/client.py b/src/gepetto/corbaserver/client.py
index 7a60631f906fd68515e24d73dd03310b88f3b077..2d0439a22cdc6c9082f218338e1add5661445e29 100644
--- a/src/gepetto/corbaserver/client.py
+++ b/src/gepetto/corbaserver/client.py
@@ -83,12 +83,7 @@ def gui_client(window_name = None, dont_raise = False, url = None, host = None,
       print("Check whether gepetto-gui is properly started.")
     return
   if window_name is not None:
-    if window_name in gui.getWindowList():
-      window_id = gui.getWindowID(window_name)
-    else:
-      window_id = gui.createWindow(window_name)
-    #TODO Should we return the window ID ?
-    # I think it is useless at it is almost never used.
+    gui.createWindow(window_name)
   return gui
 
 def _initWithNameService (orb, urlNameService):
diff --git a/src/gepetto/corbaserver/tools.py b/src/gepetto/corbaserver/tools.py
index 1c84b319680941f0ca7e76b642f1bae2e795b222..986e4468f59ac2600eb083d0b4d8d99e470b04ae 100644
--- a/src/gepetto/corbaserver/tools.py
+++ b/src/gepetto/corbaserver/tools.py
@@ -162,6 +162,10 @@ class Vector6:
     ## - Vector6.linF
     ## - Vector6.angF
     ## \param groupName name of an **existing** group
+    ## \param angFactor the norm of the angular part of the vector is divided by
+    ##        this value
+    ## \param linFactor the norm of the linear part of the vector is divided by
+    ##        this value
     def __init__ (self, groupName, angFactor = pi, linFactor = 1.):
         self.name = groupName
         ## The Linear part
diff --git a/src/graphical-interface.impl.cpp b/src/graphical-interface.impl.cpp
index 7a316a4a5f63717fecaee29ab82e49153e09d287..f9517a21e5e942a1e6fa27656442fe90dee81657 100644
--- a/src/graphical-interface.impl.cpp
+++ b/src/graphical-interface.impl.cpp
@@ -57,27 +57,27 @@ namespace gepetto {
 #define WRITE_OP_ARGS_6(T0,T1,T2,T3,T4,T5) WRITE_OP_ARGS_5(T0,T1,T2,T3,T4), WRITE_OP_ARG(T5,5)
 
 #define BIND_TO_WINDOWS_MANAGER_0(Ret, Func      )                             \
-      WRITE_RET_T(Ret) GraphicalInterface::Func (                  ) throw (Error)          \
+      WRITE_RET_T(Ret) GraphicalInterface::Func (                  )           \
       {                                                                        \
           try {                                                                \
-            WRITE_RET_OP(Ret)( windowsManager_->Func (                ));                  \
+            WRITE_RET_OP(Ret)( windowsManager_->Func (                ));      \
           } catch (const std::exception& exc) {                                \
               throw Error (exc.what ());                                       \
           }                                                                    \
       }
 
-#define BIND_TO_WINDOWS_MANAGER_1(Ret, Func, T0)                             \
-      WRITE_RET_T(Ret) GraphicalInterface::Func (WRITE_INPUT_ARGS_1(T0)) throw (Error)          \
+#define BIND_TO_WINDOWS_MANAGER_1(Ret, Func, T0)                               \
+      WRITE_RET_T(Ret) GraphicalInterface::Func (WRITE_INPUT_ARGS_1(T0))       \
       {                                                                        \
           try {                                                                \
-            WRITE_RET_OP(Ret)( windowsManager_->Func ( WRITE_OP_ARGS_1(T0) ));                  \
+            WRITE_RET_OP(Ret)( windowsManager_->Func ( WRITE_OP_ARGS_1(T0) )); \
           } catch (const std::exception& exc) {                                \
               throw Error (exc.what ());                                       \
           }                                                                    \
       }
 
 #define BIND_TO_WINDOWS_MANAGER_2(Ret, Func, T0, T1)     \
-      WRITE_RET_T(Ret) GraphicalInterface::Func (WRITE_INPUT_ARGS_2(T0, T1)) throw (Error)          \
+      WRITE_RET_T(Ret) GraphicalInterface::Func (WRITE_INPUT_ARGS_2(T0, T1))   \
       {                                                                        \
           try {                                                                \
             WRITE_RET_OP(Ret)( windowsManager_->Func ( WRITE_OP_ARGS_2(T0, T1) ));\
@@ -86,8 +86,8 @@ namespace gepetto {
           }                                                                    \
       }
 
-#define BIND_TO_WINDOWS_MANAGER_3(Ret, Func, T0, T1, T2)     \
-      WRITE_RET_T(Ret) GraphicalInterface::Func (WRITE_INPUT_ARGS_3(T0, T1, T2)) throw (Error)          \
+#define BIND_TO_WINDOWS_MANAGER_3(Ret, Func, T0, T1, T2)                       \
+      WRITE_RET_T(Ret) GraphicalInterface::Func (WRITE_INPUT_ARGS_3(T0, T1, T2))          \
       {                                                                        \
           try {                                                                \
             WRITE_RET_OP(Ret)( windowsManager_->Func ( WRITE_OP_ARGS_3(T0, T1, T2) ));\
@@ -96,8 +96,8 @@ namespace gepetto {
           }                                                                    \
       }
 
-#define BIND_TO_WINDOWS_MANAGER_4(Ret, Func, T0, T1, T2, T3)     \
-      WRITE_RET_T(Ret) GraphicalInterface::Func (WRITE_INPUT_ARGS_4(T0, T1, T2, T3)) throw (Error)          \
+#define BIND_TO_WINDOWS_MANAGER_4(Ret, Func, T0, T1, T2, T3)                   \
+      WRITE_RET_T(Ret) GraphicalInterface::Func (WRITE_INPUT_ARGS_4(T0, T1, T2, T3))          \
       {                                                                        \
           try {                                                                \
             WRITE_RET_OP(Ret)( windowsManager_->Func ( WRITE_OP_ARGS_4(T0, T1, T2, T3) ));\
@@ -106,8 +106,8 @@ namespace gepetto {
           }                                                                    \
       }
 
-#define BIND_TO_WINDOWS_MANAGER_5(Ret, Func, T0, T1, T2, T3, T4)     \
-      WRITE_RET_T(Ret) GraphicalInterface::Func (WRITE_INPUT_ARGS_5(T0, T1, T2, T3, T4)) throw (Error)          \
+#define BIND_TO_WINDOWS_MANAGER_5(Ret, Func, T0, T1, T2, T3, T4)               \
+      WRITE_RET_T(Ret) GraphicalInterface::Func (WRITE_INPUT_ARGS_5(T0, T1, T2, T3, T4))          \
       {                                                                        \
           try {                                                                \
             WRITE_RET_OP(Ret)( windowsManager_->Func ( WRITE_OP_ARGS_5(T0, T1, T2, T3, T4) ));\
@@ -116,8 +116,8 @@ namespace gepetto {
           }                                                                    \
       }
 
-#define BIND_TO_WINDOWS_MANAGER_6(Ret, Func, T0,T1,T2,T3,T4,T5)     \
-      WRITE_RET_T(Ret) GraphicalInterface::Func (WRITE_INPUT_ARGS_6(T0,T1,T2,T3,T4,T5)) throw (Error)          \
+#define BIND_TO_WINDOWS_MANAGER_6(Ret, Func, T0,T1,T2,T3,T4,T5)                \
+      WRITE_RET_T(Ret) GraphicalInterface::Func (WRITE_INPUT_ARGS_6(T0,T1,T2,T3,T4,T5))          \
       {                                                                        \
           try {                                                                \
             WRITE_RET_OP(Ret)( windowsManager_->Func ( WRITE_OP_ARGS_6(T0,T1,T2,T3,T4,T5) ));\
@@ -315,7 +315,7 @@ namespace gepetto {
       BIND_TO_WINDOWS_MANAGER_2(VOID,callVoidProperty,STRING,STRING)
 
       // ------------- Callbacks -------------------- //
-      bool GraphicalInterface::registerNodeCallback (NodeCallback_ptr _cb) throw (Error)
+      bool GraphicalInterface::registerNodeCallback (NodeCallback_ptr _cb)
       {
         corbaserver::NodeCallback_var cb(corbaserver::NodeCallback::_duplicate(_cb));
         new NodeCallback (qparent_, cb);
diff --git a/src/graphical-interface.impl.hh b/src/graphical-interface.impl.hh
index 393aae5494e0d6708ae18db8e755ed8abcb64427..6531ffdabce732ed80723d9e0859c9f761872c3c 100644
--- a/src/graphical-interface.impl.hh
+++ b/src/graphical-interface.impl.hh
@@ -11,7 +11,7 @@
 
 #include <omniORB4/CORBA.h>
 
-#include "gepetto/viewer/corba/server.hh"
+#include "server.hh"
 #include "gepetto/viewer/corba/graphical-interface.hh"
 
 namespace gepetto {
@@ -30,8 +30,6 @@ private:
     typedef gepetto::gui::WindowsManager::value_type value_type;
 
 public:
-    typedef CORBA::ULong WindowID;
-
     /**
         \brief Default constructor
         */
@@ -42,148 +40,145 @@ public:
       qparent_ = parent;
     }
 
-  virtual Names_t* getNodeList() throw (Error);
-  virtual Names_t* getGroupNodeList(const char* group) throw (Error);
-  virtual Names_t* getSceneList() throw (Error);
-  virtual Names_t* getWindowList() throw (Error);
+  virtual Names_t* getNodeList();
+  virtual Names_t* getGroupNodeList(const char* group);
+  virtual Names_t* getSceneList();
+  virtual Names_t* getWindowList();
 
-  virtual void refresh() throw (Error);
-  virtual void setRefreshIsSynchronous(bool synchronous) throw (Error);
+  virtual void refresh();
+  virtual void setRefreshIsSynchronous(bool synchronous);
 
-  virtual WindowID createWindow(const char* windowNameCorba) throw (Error);
-  virtual WindowID getWindowID (const char* windowNameCorba) throw (Error);
+  virtual char* createWindow(const char* windowNameCorba);
+  virtual char* getWindowID (const char* windowNameCorba);
 
-  virtual void createScene(const char* sceneNameCorba)  throw (Error);
-  virtual void createSceneWithFloor(const char* sceneNameCorba)  throw (Error);
-  virtual bool addSceneToWindow(const char* sceneNameCorba, const WindowID windowId)  throw (Error);
+  virtual void createScene(const char* sceneNameCorba);
+  virtual void createSceneWithFloor(const char* sceneNameCorba);
+  virtual bool addSceneToWindow(const char* sceneNameCorba, const char* windowId);
 
-  virtual bool attachCameraToNode(const char* nodeName, const WindowID windowId) throw (Error);
-  virtual bool detachCamera(const WindowID windowId) throw (Error);
+  virtual bool attachCameraToNode(const char* nodeName, const char* windowId);
+  virtual bool detachCamera(const char* windowId);
 
-  virtual bool nodeExists(const char* nodeName) throw (Error);
+  virtual bool nodeExists(const char* nodeName);
 
-  virtual bool addFloor(const char* floorName) throw (Error);
+  virtual bool addFloor(const char* floorName);
 
-  virtual bool addBox(const char* boxName, const float boxSize1, const float boxSize2, const float boxSize3, const Color color) throw (Error);
+  virtual bool addBox(const char* boxName, const float boxSize1, const float boxSize2, const float boxSize3, const Color color);
 
-  virtual bool addCapsule(const char* capsuleName, float radius, float height, const Color color) throw (Error);
+  virtual bool addCapsule(const char* capsuleName, float radius, float height, const Color color);
 
-  virtual  bool addArrow (const char* arrowNameCorba, float radius, float length,const Color colorCorba) throw (Error);
+  virtual  bool addArrow (const char* arrowNameCorba, float radius, float length,const Color colorCorba);
 
-  virtual bool addRod (const char* rodNameCorba, const Color colorCorba, const float radius, const float length,short maxCapsule) throw (Error);
+  virtual bool addRod (const char* rodNameCorba, const Color colorCorba, const float radius, const float length,short maxCapsule);
 
-  virtual bool resizeCapsule(const char* capsuleNameCorba, float newHeight) throw(Error);
+  virtual bool resizeCapsule(const char* capsuleNameCorba, float newHeight);
 
-  virtual bool resizeArrow(const char* arrowNameCorba ,float newRadius, float newLength) throw(Error);
+  virtual bool resizeArrow(const char* arrowNameCorba ,float newRadius, float newLength);
 
-  virtual bool addMesh(const char* meshNameCorba, const char* meshPathCorba)  throw (Error);
+  virtual bool addMesh(const char* meshNameCorba, const char* meshPathCorba);
 
-  virtual void removeLightSources (const char* meshNameCorba)  throw (Error);
+  virtual void removeLightSources (const char* meshNameCorba);
 
-  virtual bool addCone(const char* coneName, float radius, float height, const Color color) throw (Error);
+  virtual bool addCone(const char* coneName, float radius, float height, const Color color);
 
-  virtual bool addCylinder(const char* cylinderName, float radius, float height, const Color color) throw (Error);
+  virtual bool addCylinder(const char* cylinderName, float radius, float height, const Color color);
 
-  virtual bool addSphere(const char* sphereName, float radius, const Color color) throw (Error);
+  virtual bool addSphere(const char* sphereName, float radius, const Color color);
 
-  virtual bool addLight(const char* lightName, const WindowID windowId, float radius, const Color color) throw (Error);
+  virtual bool addLight(const char* lightName, const char* windowId, float radius, const Color color);
 
-  virtual bool addLine(const char* lineName, const value_type* pos1, const value_type* pos2, const Color color) throw (Error);
-  virtual bool setLineStartPoint(const char* lineName, const value_type* pos1) throw (Error);
-  virtual bool setLineEndPoint(const char* lineName, const value_type* pos1) throw (Error);
-  virtual bool setLineExtremalPoints(const char* lineName, const value_type* pos1, const value_type* pos2) throw (Error);
+  virtual bool addLine(const char* lineName, const value_type* pos1, const value_type* pos2, const Color color);
+  virtual bool setLineStartPoint(const char* lineName, const value_type* pos1);
+  virtual bool setLineEndPoint(const char* lineName, const value_type* pos1);
+  virtual bool setLineExtremalPoints(const char* lineName, const value_type* pos1, const value_type* pos2);
 
-  virtual bool addCurve(const char* curveName, const PositionSeq& pos, const Color color) throw (Error);
-  virtual bool setCurvePoints(const char* curveName, const PositionSeq& pos) throw (Error);
+  virtual bool addCurve(const char* curveName, const PositionSeq& pos, const Color color);
+  virtual bool setCurvePoints(const char* curveName, const PositionSeq& pos);
 
-  virtual bool setCurveMode(const char* curveName, const char* modeName) throw (Error);
-  virtual bool setCurvePointsSubset(const char* curveName, CORBA::Long first, CORBA::Long count) throw (Error);
-  virtual bool setCurveLineWidth(const char* curveName, const float width) throw (Error);
+  virtual bool setCurveMode(const char* curveName, const char* modeName);
+  virtual bool setCurvePointsSubset(const char* curveName, CORBA::Long first, CORBA::Long count);
+  virtual bool setCurveLineWidth(const char* curveName, const float width);
 
-  virtual bool addSquareFace(const char* faceName, const value_type* pos1, const value_type* pos2, const value_type* pos3, const value_type* pos4, const Color color) throw (Error);
-  virtual bool setTexture (const char* nodeName, const char* filename) throw (Error);
-  virtual bool addTriangleFace(const char* faceName, const value_type* pos1, const value_type* pos2, const value_type* pos3, const Color color) throw (Error);
+  virtual bool addSquareFace(const char* faceName, const value_type* pos1, const value_type* pos2, const value_type* pos3, const value_type* pos4, const Color color);
+  virtual bool setTexture (const char* nodeName, const char* filename);
+  virtual bool addTriangleFace(const char* faceName, const value_type* pos1, const value_type* pos2, const value_type* pos3, const Color color);
 
-  virtual bool addXYZaxis (const char* nodeNameCorba, const Color colorCorba, float radius, float sizeAxis) throw (Error);
+  virtual bool addXYZaxis (const char* nodeNameCorba, const Color colorCorba, float radius, float sizeAxis);
 
-  virtual bool createRoadmap(const char* nameCorba,const Color colorNodeCorba, float radius, float sizeAxis, const Color colorEdgeCorba) throw(Error);
+  virtual bool createRoadmap(const char* nameCorba,const Color colorNodeCorba, float radius, float sizeAxis, const Color colorEdgeCorba);
 
-  virtual bool addEdgeToRoadmap(const char* nameRoadmap, const value_type* posFrom, const value_type* posTo) throw(Error);
+  virtual bool addEdgeToRoadmap(const char* nameRoadmap, const value_type* posFrom, const value_type* posTo);
 
-  virtual bool addNodeToRoadmap(const char* nameRoadmap, const value_type* configuration) throw(Error);
+  virtual bool addNodeToRoadmap(const char* nameRoadmap, const value_type* configuration);
 
 
-  virtual bool addURDF(const char* urdfNameCorba, const char* urdfPathCorba)
-    throw (Error);
+  virtual bool addURDF(const char* urdfNameCorba, const char* urdfPathCorba);
 
   virtual bool addUrdfCollision (const char* urdfNameCorba,
-				 const char* urdfPathCorba)
-    throw (Error);
+				 const char* urdfPathCorba);
 
   virtual void addUrdfObjects (const char* urdfNameCorba,
 			       const char* urdfPathCorba,
-			       bool visual)
-    throw (Error);
-
-  virtual bool createGroup(const char* groupNameCorba)  throw (Error);
-  virtual bool addToGroup(const char* nodeNameCorba, const char* groupNameCorba)  throw (Error);
-  virtual bool removeFromGroup (const char* nodeNameCorba,const char* groupNameCorba)  throw (Error);
-
-  virtual bool applyConfiguration(const char* nodeNameCorba, const value_type* configuration)  throw (Error);
-  virtual bool applyConfigurations(const Names_t& nodeNameCorba, const TransformSeq& configuration)  throw (Error);
-
-  virtual bool addLandmark(const char* nodeNameCorba, float size) throw (Error);
-  virtual bool deleteLandmark(const char* nodeNameCorba) throw (Error);
-
-  virtual Transform_slice* getStaticTransform (const char* nodeName) throw (Error);
-  virtual bool setStaticTransform (const char* nodeName, const Transform transform) throw (Error);
-
-  virtual bool setVisibility(const char* nodeNameCorba, const char* visibilityModeCorba)  throw (Error);
-  virtual bool setScale(const char* nodeNameCorba, const value_type* scale)throw (Error);
-  virtual bool setColor(const char* nodeNameCorba, const Color color) throw (Error);
-  virtual bool setWireFrameMode(const char* nodeNameCorba, const char* wireFrameModeCorba)  throw (Error);
-  virtual bool setLightingMode(const char* nodeNameCorba, const char* lightingModeCorba)  throw (Error);
-  virtual bool setHighlight(const char* nodeNameCorba, ::CORBA::Long state)  throw (Error);
-
-  virtual void captureFrame (const WindowID windowId, const char* filename) throw (Error);
-  virtual bool startCapture (const WindowID windowId, const char* filename,
-      const char* extension) throw (Error);
-  virtual bool stopCapture (const WindowID windowId) throw (Error);
-  virtual bool setCaptureTransform (const char* filename, const Names_t& nodename) throw (Error);
-  virtual void captureTransformOnRefresh (bool autoCapture) throw (Error);
-  virtual void captureTransform () throw (Error);
-  virtual bool writeBlenderScript (const char* filename, const Names_t& nodeNames) throw (Error);
-  virtual bool writeNodeFile (const char* nodename, const char* filename) throw (Error);
-  virtual bool writeWindowFile (const WindowID windowId, const char* filename) throw (Error);
-
-  virtual Transform_slice* getNodeGlobalTransform(const char* nodeName) throw (Error);
-  virtual void deleteNode (const char* nodeName, bool all) throw (Error);
-  virtual bool setBackgroundColor1(const WindowID windowId,const Color colorCorba) throw (Error);
-  virtual bool setBackgroundColor2(const WindowID windowId,const Color colorCorba) throw (Error);
-  virtual Transform_slice* getCameraTransform(const WindowID windowId) throw (Error);
-  virtual bool setCameraTransform(const WindowID windowId, const value_type *configurationCorba)throw (Error);
+			       bool visual);
+
+  virtual bool createGroup(const char* groupNameCorba);
+  virtual bool addToGroup(const char* nodeNameCorba, const char* groupNameCorba);
+  virtual bool removeFromGroup (const char* nodeNameCorba,const char* groupNameCorba);
+
+  virtual bool applyConfiguration(const char* nodeNameCorba, const value_type* configuration);
+  virtual bool applyConfigurations(const Names_t& nodeNameCorba, const TransformSeq& configuration);
+
+  virtual bool addLandmark(const char* nodeNameCorba, float size);
+  virtual bool deleteLandmark(const char* nodeNameCorba);
+
+  virtual Transform_slice* getStaticTransform (const char* nodeName);
+  virtual bool setStaticTransform (const char* nodeName, const Transform transform);
+
+  virtual bool setVisibility(const char* nodeNameCorba, const char* visibilityModeCorba);
+  virtual bool setScale(const char* nodeNameCorba, const value_type* scale);
+  virtual bool setColor(const char* nodeNameCorba, const Color color);
+  virtual bool setWireFrameMode(const char* nodeNameCorba, const char* wireFrameModeCorba);
+  virtual bool setLightingMode(const char* nodeNameCorba, const char* lightingModeCorba);
+  virtual bool setHighlight(const char* nodeNameCorba, ::CORBA::Long state);
+
+  virtual void captureFrame (const char* windowId, const char* filename);
+  virtual bool startCapture (const char* windowId, const char* filename,
+      const char* extension);
+  virtual bool stopCapture (const char* windowId);
+  virtual bool setCaptureTransform (const char* filename, const Names_t& nodename);
+  virtual void captureTransformOnRefresh (bool autoCapture);
+  virtual void captureTransform ();
+  virtual bool writeBlenderScript (const char* filename, const Names_t& nodeNames);
+  virtual bool writeNodeFile (const char* nodename, const char* filename);
+  virtual bool writeWindowFile (const char* windowId, const char* filename);
+
+  virtual Transform_slice* getNodeGlobalTransform(const char* nodeName);
+  virtual void deleteNode (const char* nodeName, bool all);
+  virtual bool setBackgroundColor1(const char* windowId,const Color colorCorba);
+  virtual bool setBackgroundColor2(const char* windowId,const Color colorCorba);
+  virtual Transform_slice* getCameraTransform(const char* windowId);
+  virtual bool setCameraTransform(const char* windowId, const value_type *configurationCorba);
 
   // ------------- Properties -------------------- //
-  virtual Names_t* getPropertyNames(const char* nodeName) throw (Error);
-  virtual Names_t* getPropertyTypes(const char* nodeName) throw (Error);
-  virtual char* getStringProperty(const char* nodeName, const char* propName) throw (Error);
-  virtual void setStringProperty(const char* nodeName, const char* propName, const char* value) throw (Error);
-  virtual Color_slice* getColorProperty(const char* nodeName, const char* propName) throw (Error);
-  virtual void setColorProperty(const char* nodeName, const char* propName, const Color value) throw (Error);
-  virtual Position_slice* getVector3Property(const char* nodeName, const char* propName) throw (Error);
-  virtual void setVector3Property(const char* nodeName, const char* propName, const Position value) throw (Error);
-  virtual Position_slice* getVector2Property(const char* nodeName, const char* propName) throw (Error);
-  virtual void setVector2Property(const char* nodeName, const char* propName, const Position value) throw (Error);
-  virtual float getFloatProperty(const char* nodeName, const char* propName) throw (Error);
-  virtual void setFloatProperty(const char* nodeName, const char* propName, float value) throw (Error);
-  virtual bool getBoolProperty(const char* nodeName, const char* propName) throw (Error);
-  virtual void setBoolProperty(const char* nodeName, const char* propName, bool value) throw (Error);
-  virtual CORBA::Long getIntProperty(const char* nodeName, const char* propName) throw (Error);
-  virtual void setIntProperty(const char* nodeName, const char* propName, CORBA::Long value) throw (Error);
-  virtual void callVoidProperty(const char* nodeName, const char* propName) throw (Error);
+  virtual Names_t* getPropertyNames(const char* nodeName);
+  virtual Names_t* getPropertyTypes(const char* nodeName);
+  virtual char* getStringProperty(const char* nodeName, const char* propName);
+  virtual void setStringProperty(const char* nodeName, const char* propName, const char* value);
+  virtual Color_slice* getColorProperty(const char* nodeName, const char* propName);
+  virtual void setColorProperty(const char* nodeName, const char* propName, const Color value);
+  virtual Position_slice* getVector3Property(const char* nodeName, const char* propName);
+  virtual void setVector3Property(const char* nodeName, const char* propName, const Position value);
+  virtual Position_slice* getVector2Property(const char* nodeName, const char* propName);
+  virtual void setVector2Property(const char* nodeName, const char* propName, const Position value);
+  virtual float getFloatProperty(const char* nodeName, const char* propName);
+  virtual void setFloatProperty(const char* nodeName, const char* propName, float value);
+  virtual bool getBoolProperty(const char* nodeName, const char* propName);
+  virtual void setBoolProperty(const char* nodeName, const char* propName, bool value);
+  virtual CORBA::Long getIntProperty(const char* nodeName, const char* propName);
+  virtual void setIntProperty(const char* nodeName, const char* propName, CORBA::Long value);
+  virtual void callVoidProperty(const char* nodeName, const char* propName);
 
   // ------------- Callbacks -------------------- //
-  bool registerNodeCallback (NodeCallback_ptr cb) throw (Error);
+  bool registerNodeCallback (NodeCallback_ptr cb);
 }; // end of class
 
 } /* namespace impl */
diff --git a/src/server-private.cc b/src/server-private.cc
index ed69113d9c0bb7fd37e1255392f6f8ff07f0f4e8..7664b2d6b2a6406c69e2766f4cb220bc8abd44aa 100644
--- a/src/server-private.cc
+++ b/src/server-private.cc
@@ -8,12 +8,12 @@
 //
 // See the COPYING file for more information.
 
+#include "server-private.hh"
+
 #include <iostream>
 #include <stdexcept>
 
 #include "graphical-interface.impl.hh"
-#include "server-private.hh"
-#include "gepetto/viewer/corba/fwd.hh"
 
 namespace gepetto {
   namespace viewer {
@@ -33,7 +33,8 @@ namespace gepetto {
 
       Server::~Server ()
       {
-	delete graphicalInterfaceServantid_;
+        //TODO for a reason I do not understand, this SEGV.
+	//delete graphicalInterfaceServantid_;
       }
 
       void
@@ -44,7 +45,8 @@ namespace gepetto {
 
       void Server::deactivateAndDestroyServers()
       {
-	  poa_->deactivate_object(*graphicalInterfaceServantid_);
+        //TODO for a reason I do not understand, this SEGV.
+        //poa_->deactivate_object(*graphicalInterfaceServantid_);
       }
 
       void Server::createContext ()
diff --git a/src/server-private.hh b/src/server-private.hh
index 4859c11dd8beb301721695115a733285fe937d64..514b6c340d2f5721b388c338959e0f903b66f193 100644
--- a/src/server-private.hh
+++ b/src/server-private.hh
@@ -11,8 +11,9 @@
 #ifndef SCENEVIEWER_CORBASERVER_SERVER_PRIVATE_HH
 # define SCENEVIEWER_CORBASERVER_SERVER_PRIVATE_HH
 
+# include <omniORB4/CORBA.h>
+
 # include "graphical-interface.impl.hh"
-# include "gepetto/viewer/corba/fwd.hh"
 
 namespace gepetto {
   namespace viewer {
diff --git a/src/server.cc b/src/server.cc
index 83503818275b6711f3b4df89c9715c8cf2c35e37..f3dab8d3f7a83ef1bf5765005926c1f999cc2168 100644
--- a/src/server.cc
+++ b/src/server.cc
@@ -13,7 +13,7 @@
 #include <iostream>
 #include <stdexcept>
 
-#include "gepetto/viewer/corba/server.hh"
+#include "server.hh"
 #include "server-private.hh"
 
 namespace gepetto {
@@ -26,20 +26,6 @@ namespace gepetto {
     using CORBA::PolicyList;
     using omniORB::fatalException;
 
-    //namespace
-    //{
-      /// \brief Forward logging messages to hpp logging mechanism.
-      /// If debug is disabled, CORBA logging will be disabled too.
-      ///
-      /// Tracing has to be enabled in your ``omniORB.cfg'' to use this
-      /// feature.
-      /// See ``omniORB configuration and API'' > ``Tracing options''
-      /// section of omniORB manual for more information.
-      //void logFunction (const char* msg);
-
-    //} // end of anonymous namespace.
-
-
     Server::Server(WindowsManagerPtr_t wm, int argc, const char *argv[],
         bool inMultiThread, bool useNameService)
       : windowsManager_ (wm)
@@ -54,7 +40,6 @@ namespace gepetto {
       private_->qparent (parent);
     }
 
-    /// \brief Shutdown CORBA server
     Server::~Server()
     {
       private_->deactivateAndDestroyServers();
@@ -147,7 +132,6 @@ namespace gepetto {
       pman->activate();
     }
 
-    /// \brief If CORBA requests are pending, process them
     int Server::processRequest (bool loop)
     {
       if (loop)
diff --git a/include/gepetto/viewer/corba/server.hh b/src/server.hh
similarity index 69%
rename from include/gepetto/viewer/corba/server.hh
rename to src/server.hh
index bc97f8ec976540d88b70d8703c83c9935b7c15ed..94724fd14c21b0a2f6fa1d29aeeba0ebd92b9200 100644
--- a/include/gepetto/viewer/corba/server.hh
+++ b/src/server.hh
@@ -11,7 +11,7 @@
 #ifndef SCENEVIEWER_CORBASERVER_SERVER_HH
 # define SCENEVIEWER_CORBASERVER_SERVER_HH
 
-#include "gepetto/viewer/corba/fwd.hh"
+#include <gepetto/viewer/corba/config.hh>
 #include <gepetto/gui/windows-manager.hh>
 
 class QObject;
@@ -22,35 +22,26 @@ namespace gepetto {
     using gepetto::gui::WindowsManager;
     using gepetto::gui::WindowsManagerPtr_t;
 
-    /// Implementation of Hpp module Corba server.
-
-    ///  This class initializes the Corba server and starts the following Corba interface implementations.
-    ///  \li hpp::Robot: to build a model::Device and to insert it in a core::ProblemSolver object,
-    ///  \li hpp::Obstacle: to build obstacles and insert them in a core::ProblemSolver object,
-    ///  \li hpp::Problem: to define a path planning problem and solve it.
-
-    ///  To use this object, call the constructor
-
-    ///  \code
-    ///  int argc=1;
-    ///  char *argv[1] = {"program"};
-    ///  core::ProblemSolverPtr_t problemSolver = new core::ProblemSolver;
-    ///  Server server(problemSolver, argc, argv, isMultiThread);
-    ///  \endcode
-    ///  where \c isMultiThread specifies whether the server should process
-    ///  requests using multi-thread policy of not.
-
-    ///  After starting a name server and configuring your Corba implementation,
-    ///  start the servers.
-    ///  \code
-    ///  server.startCorbaServer();
-    ///  \endcode
-    ///  Then, enter in the loop that handle the Corba requests
-    ///  \code
-    ///  server.processRequest(true);
-    ///  \endcode
-    ///  You can then send request to the servers.
-    class /*SCENEVIEWER_CORBASERVER_DLLAPI*/ Server
+    // Foward declarations
+    namespace impl
+    {
+      class Server;
+      class GraphicalInterface;
+    } // end of namespace impl
+
+    /// Implementation of Gepetto Viewer Corba server.
+    ///
+    /// To use this object, call the constructor
+    /// \code
+    /// int argc=1;
+    /// char *argv[1] = {"program"};
+    /// Server server(windowsManager, argc, argv);
+    /// server.startCorbaServer();
+    /// // The next line will run indefinitely.
+    /// server.processRequest(true);
+    /// \endcode
+    /// You can then send request to the servers.
+    class GEPETTO_VIEWER_CORBA_DLLAPI Server
     {
     public:
       /// Constructor