diff --git a/plugins/pyqgv/decorator.cc b/plugins/pyqgv/decorator.cc
index 540c6770f18d6709f18760418c518c393e9b8f95..3f562c21a6484f51360c8c3dd0b56eda77d6bef8 100644
--- a/plugins/pyqgv/decorator.cc
+++ b/plugins/pyqgv/decorator.cc
@@ -18,6 +18,10 @@
 
 #include <PythonQt/PythonQt.h>
 #include <QGVScene.h>
+#include <QGVNode.h>
+#include <QGVEdge.h>
+
+namespace PyQgv {
 
 // ------- QGVScene ------------------------------------------- //
 QGVScene* QGVDecorator::new_QGVScene(const QString &name) { return new QGVScene(name); }
@@ -45,6 +49,16 @@ void QGVDecorator::freeLayout (QGVScene* s) { s->freeLayout(); }
 void QGVDecorator::clear      (QGVScene* s) { s->clear(); }
 // ------- QGVScene ------------------------------------------- //
 
+// ------- QGVNode  ------------------------------------------- //
+void QGVDecorator::setAttribute (QGVNode* n, const QString &name, const QString &value) { n->setAttribute(name,value); }
+QString QGVDecorator::getAttribute (QGVNode* n, const QString &name) { return n->getAttribute(name); }
+// ------- QGVNode  ------------------------------------------- //
+
+// ------- QGVEdge  ------------------------------------------- //
+void QGVDecorator::setAttribute (QGVEdge* e, const QString &name, const QString &value) { e->setAttribute(name,value); }
+QString QGVDecorator::getAttribute (QGVEdge* e, const QString &name) { return e->getAttribute(name); }
+// ------- QGVEdge  ------------------------------------------- //
+
 void registerQGV ()
 {
   PythonQt::self()->addDecorators (new QGVDecorator ());
@@ -52,3 +66,5 @@ void registerQGV ()
   PythonQt::self()->registerCPPClass ("QGVNode" , "QGraphicsItem" , "qgv");
   PythonQt::self()->registerCPPClass ("QGVEdge" , "QGraphicsItem" , "qgv");
 }
+
+} // namespace PyQgv
diff --git a/plugins/pyqgv/decorator.hh b/plugins/pyqgv/decorator.hh
index 78e741dfc25ef15f72a29740ee5e57678f7ed1da..41df4277b2a7382f13b543097c6b15ab5d6600fb 100644
--- a/plugins/pyqgv/decorator.hh
+++ b/plugins/pyqgv/decorator.hh
@@ -21,14 +21,15 @@ class QGVScene;
 class QGVNode;
 class QGVEdge;
 
-class QGVCORE_EXPORT QGVDecorator : public QObject
-{
+namespace PyQgv {
+  class QGVCORE_EXPORT QGVDecorator : public QObject
+  {
     Q_OBJECT
 
-public slots:
+    public slots:
 
-// ------- QGVScene ------------------------------------------- //
-    QGVScene* new_QGVScene(const QString &name);
+      // ------- QGVScene ------------------------------------------- //
+      QGVScene* new_QGVScene(const QString &name);
     QGVScene* new_QGVScene(const QString &name, QObject *parent);
     void delete_QGVScene(QGVScene* s);
 
@@ -51,8 +52,19 @@ public slots:
     void render     (QGVScene* s, const QString &algorithm, const QString file);
     void freeLayout (QGVScene* s);
     void clear      (QGVScene* s);
-// ------- QGVScene ------------------------------------------- //
+    // ------- QGVScene ------------------------------------------- //
 
-};
+    // ------- QGVNode  ------------------------------------------- //
+    void setAttribute (QGVNode* n, const QString &name, const QString &value);
+    QString getAttribute (QGVNode* n, const QString &name);
+    // ------- QGVNode  ------------------------------------------- //
 
-void registerQGV ();
+    // ------- QGVEdge  ------------------------------------------- //
+    void setAttribute (QGVEdge* e, const QString &name, const QString &value);
+    QString getAttribute (QGVEdge* e, const QString &name);
+    // ------- QGVEdge  ------------------------------------------- //
+  };
+
+  /// Register QGV to PythonQt
+  void registerQGV ();
+} // namespace PyQgv
diff --git a/plugins/pyqgv/plugin.cc b/plugins/pyqgv/plugin.cc
index 5dd343675d1d72438237a8d605122fc2a51cb595..adef98eba8041f4d2902a1d397ab158b9fcca3c7 100644
--- a/plugins/pyqgv/plugin.cc
+++ b/plugins/pyqgv/plugin.cc
@@ -20,8 +20,10 @@
 
 #include <decorator.hh>
 
-void PyQGV::init() {
-  registerQGV();
-}
+namespace PyQgv {
+  void Plugin::init() {
+    registerQGV();
+  }
 
-Q_EXPORT_PLUGIN2 (pyqgv, PyQGV)
+  Q_EXPORT_PLUGIN2 (pyqgv, Plugin)
+} // namespace PyQgv
diff --git a/plugins/pyqgv/plugin.hh b/plugins/pyqgv/plugin.hh
index 21587601d1a6d6152403ce980c743d4e0f808399..4229e8292e24ae739898aa013c29c5d4da2a7867 100644
--- a/plugins/pyqgv/plugin.hh
+++ b/plugins/pyqgv/plugin.hh
@@ -20,12 +20,16 @@
 
 #include <gepetto/gui/plugin-interface.hh>
 
-class PyQGV : public QObject, public gepetto::gui::PluginInterface {
-  Q_OBJECT
-  Q_INTERFACES (gepetto::gui::PluginInterface)
+namespace PyQgv {
+  /// Provide bindings of QGV library in PythonQt terminal.
+  class Plugin : public QObject, public gepetto::gui::PluginInterface {
+    Q_OBJECT
+    Q_INTERFACES (gepetto::gui::PluginInterface)
 
-  public:
-    QString name () const { return QString("PyQGV"); }
+    public:
+      QString name () const { return QString("PyQGV"); }
 
-    void init();
-};
+      /// Calls \ref registerQGV
+      void init();
+  };
+} // namespace PyQgv