diff --git a/src/dynamic-graph-py.cc b/src/dynamic-graph-py.cc
index 8ec7f59a30feed1caabce0346e4a2885fbfc602e..1e260e39fe0ad02ef0a2e6b191a5654036cb1864 100644
--- a/src/dynamic-graph-py.cc
+++ b/src/dynamic-graph-py.cc
@@ -44,12 +44,12 @@ namespace dynamicgraph {
       char* objIn = NULL;
       char* sigOut = NULL;
       char* sigIn = NULL;
-      if (!PyArg_ParseTuple(args,"ssss", &objOut, &sigOut, &objIn, &sigIn))
+      if (!PyArg_ParseTuple(args,"ssss", &objIn, &sigIn, &objOut, &sigOut))
 	return NULL;
 
       std::ostringstream os;
       try {
-	interpreter.cmdPlug(objOut, sigOut, objIn, sigIn, os);
+	interpreter.cmdPlug(objIn, sigIn, objOut, sigOut, os);
       } catch (dynamicgraph::ExceptionFactory& exc) {
 	PyErr_SetString(error, exc.getStringMessage().c_str());
 	return NULL;
diff --git a/src/dynamic_graph/__init__.py b/src/dynamic_graph/__init__.py
index 50aff797b6b5a1f57769b909759d471525106bd4..5ecd6b7d73cf8fb95ea800c070de52187c04c60f 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 (signalOut, signalIn) :
+def plug (signalIn, signalOut) :
     """
     Plug an output signal into an input signal
-    syntax is plug ("entityOut.signalOut", "entityIn.signalIn")
+    syntax is plug ("entityIn.signalIn", "entityOut.signalOut")
     """
     # get signals and entities
-    [eOut, sOut] = re.split("\.", signalOut)
     [eIn, sIn] = re.split("\.", signalOut)
-    w_plug(eOut, sOut, eIn, sIn)
+    [eOut, sOut] = re.split("\.", signalOut)
+    w_plug(eIn, sIn, eOut, sOut)