diff --git a/contrib/onelab/python/OnelabClient.py b/contrib/onelab/python/OnelabClient.py
index 3d6da4ae6d4b0653adb8801b35c7613a065f0d5b..c3b380b1382955189679e9c72e2f191516efa6cf 100755
--- a/contrib/onelab/python/OnelabClient.py
+++ b/contrib/onelab/python/OnelabClient.py
@@ -114,7 +114,7 @@ class client :
       self._createSocket()
       self.socket.send(struct.pack('ii%is' %len(m), t, len(m), m))
 
-  def _declare_parameter(self, param) :
+  def _define_parameter(self, param) :
     if not self.socket :
       return
     self._send(self._GMSH_PARAMETER_QUERY, param.tochar())
@@ -125,22 +125,22 @@ class client :
       self._send(self._GMSH_PARAMETER, param.tochar()) #declaration
     #print param.tochar()
     
-  def declareNumber(self, name, **param):
+  def defineNumber(self, name, **param):
     if 'labels' in param :
       param["choices"] = param["labels"].keys()
     p = _parameter('number', name=name, **param)
     if 'value' not in param : #make the parameter readOnly
       p.readOnly = 1
       p.attributes={'Highlight':'Orchid'}
-    self._declare_parameter(p)
+    self._define_parameter(p)
     return p.value
 
-  def declareString(self, name, **param):
+  def defineString(self, name, **param):
     p = _parameter('string', name=name, **param)
     if 'value' not in param : #make the parameter readOnly
       p.readOnly = 1
       p.attributes={'Highlight':'Orchid'}
-    self._declare_parameter(p)
+    self._define_parameter(p)
     return p.value
   
   def setNumber(self, name, **param):
@@ -155,7 +155,7 @@ class client :
     elif t == self._GMSH_PARAMETER_NOT_FOUND :
       p.modify(**param)
       self._send(self._GMSH_PARAMETER, p.tochar())
-    return p.value
+    #return p.value What for?
 
   def setString(self, name, **param):
     if not self.socket :
@@ -169,7 +169,6 @@ class client :
     elif t == self._GMSH_PARAMETER_NOT_FOUND : #create a new parameter
       p.modify(**param)
       self._send(self._GMSH_PARAMETER, p.tochar())
-    return p.value
   
   def _get_parameter(self, param, warn_if_not_found=True) :
     if not self.socket :
@@ -191,7 +190,7 @@ class client :
     self._get_parameter(param, warn_if_not_found)
     return param.value
 
-  def geometry(self, filename) :
+  def openGeometry(self, filename) :
     if not self.socket or not filename :
       return
     #if self.action == 'compute' and self.getString('Gmsh/MergedGeo', False) == filename :
@@ -207,6 +206,11 @@ class client :
     if not self.socket :
       return
     self._send(self._GMSH_PARSE_STRING, 'Mesh 3; Save "' + filename + '";')
+
+  def sendCommand(self, command) :
+    if not self.socket :
+      return
+    self._send(self._GMSH_PARSE_STRING, command + ' ;')
     
   def mergeFile(self, filename) :
     if not self.socket :
diff --git a/contrib/onelab/python/test.py b/contrib/onelab/python/test.py
index 7bcce603875e2987b4b91e1950185d3ed0e0977e..4cb14c8ffdaf320b52e20e86e64aba22b71c28c1 100755
--- a/contrib/onelab/python/test.py
+++ b/contrib/onelab/python/test.py
@@ -7,28 +7,29 @@ modelName = 'coin'
 OL = onelab.client()
 print('\nStarting METAMODEL - Action = %s' %(OL.getString('python/Action')))
 
-#name and default value are required
-A = OL.setNumber('A', 10)
-#other attributes are optionals
-#B = oc.def_number('Group/B', 0, min = -10, max = 10, step = 1)
+A = OL.defineNumber('A', value=10)
 
-OL.showGeometry(modelName + '.geo')
+C = OL.defineNumber('Group/C', value=2, choices = [0, 1, 2, 3], attributes={'Highlight':'Pink'})
+D = OL.defineNumber('Group/D', value=3, labels = {0:'zero', 1:'un', 2:'deux', 3:'trois'}, attributes={'Highlight':'Blue'})
 
-OL.run('gmsh', 'gmsh ' + modelName + '.geo -2')
+OL.openGeometry(modelName + '.geo')
+OL.preProcess(modelName + '.txt.ol')
 
-OL.mergeFile(modelName + '.msh')
+if OL.action == 'compute' :
+  OL.mesh(modelName + '.msh')
+  
+#OL.run('gmsh', 'gmsh ' + modelName + '.geo -2')
+#OL.mergeFile(modelName + '.msh')
 
-OL.run('subclient', 'sub.py')
+OL.run('subclient', 'sub.py','')
 
-C = OL.setNumber('Group/C', 2, choices = [0, 1, 2, 3], attributes={'Highlight':'Pink'})
-D = OL.setNumber('Group/D', 2, labels = {0:'zero', 1:'un', 2:'deux', 3:'trois'}, attributes={'Highlight':'Blue'})
 
+#B = oc.defineNumber('Group/B', 0, min = -10, max = 10, step = 1)
 #utf-8 are allowed everywhere
 #(should be prefixed by 'u' in python 2, not required in python 3)
 #Omega = OL.getString(u'Ω', u'∫(∂φ/∂α)³dx', help=u'ask someone@universe.org',
 #choices = ['oui', 'non', u'peut-être'])
 
-OL.preProcess(modelName + '.txt.ol')
 
-if OL.action != 'compute' :
-  exit(0)
+
+