diff --git a/src/dynamic-graph-py.cc b/src/dynamic-graph-py.cc
index b3a993b1a92832a7624156950450c1bf4de2f10c..544b0b50c5f00d5b6eb905c739258cf7dd9fc9de 100644
--- a/src/dynamic-graph-py.cc
+++ b/src/dynamic-graph-py.cc
@@ -44,18 +44,18 @@ namespace dynamicgraph {
     PyObject*
     plug(PyObject* self, PyObject* args)
     {
-      char* objOut = NULL;
       char* objIn = NULL;
-      char* sigOut = NULL;
+      char* objOut = NULL;
       char* sigIn = NULL;
-      if (!PyArg_ParseTuple(args,"ssss", &objIn, &sigIn, &objOut, &sigOut))
+      char* sigOut = NULL;
+      if (!PyArg_ParseTuple(args,"ssss", &objOut, &sigOut, &objIn, &sigIn))
 	return NULL;
 
       std::ostringstream os;
       try {
-	interpreter.cmdPlug(objIn, sigIn, objOut, sigOut, os);
-      } catch (dynamicgraph::ExceptionFactory& exc) {
-	PyErr_SetString(error, exc.getStringMessage().c_str());
+	interpreter.cmdPlug(objOut, sigOut, objIn, sigIn, os);
+      } catch (std::exception& exc) {
+	PyErr_SetString(error, exc.what());
 	return NULL;
       }
 
diff --git a/src/dynamic_graph/__init__.py b/src/dynamic_graph/__init__.py
index 5ecd6b7d73cf8fb95ea800c070de52187c04c60f..9ca6f39d76b27a83afebc32f3195c22bc71b9fc8 100644
--- a/src/dynamic_graph/__init__.py
+++ b/src/dynamic_graph/__init__.py
@@ -7,12 +7,12 @@ from wrap import *
 import entity, signal_base
 import re
 
-def plug (signalIn, signalOut) :
+def plug (signalOut, signalIn) :
     """
     Plug an output signal into an input signal
     syntax is plug ("entityIn.signalIn", "entityOut.signalOut")
     """
     # get signals and entities
-    [eIn, sIn] = re.split("\.", signalOut)
     [eOut, sOut] = re.split("\.", signalOut)
-    w_plug(eIn, sIn, eOut, sOut)
+    [eIn, sIn] = re.split("\.", signalIn)
+    w_plug(eOut, sOut, eIn, sIn)