diff --git a/contrib/mobile/Android/src/org/geuz/onelab/Gmsh.java b/contrib/mobile/Android/src/org/geuz/onelab/Gmsh.java
index 3d1ba9c3372453eb9e77a9e0734b96a038f2c9a7..8ab60bc12db8ae975437a975055952e28016cd06 100644
--- a/contrib/mobile/Android/src/org/geuz/onelab/Gmsh.java
+++ b/contrib/mobile/Android/src/org/geuz/onelab/Gmsh.java
@@ -18,11 +18,15 @@ public class Gmsh {
 	private native void initView(long ptr, int w, int h); // Called each time the GLView change
 	private native void drawView(long ptr); // Called each time the GLView request a render
 	private native void eventHandler(long ptr, int event, float x, float y);
-	private native void setShow(long ptr, String what, boolean show); // select what to show / hide
-	private native boolean isShow(long ptr, String what);
 	private native long getOnelabInstance(); // return the singleton of the onelab server
 	public native String[] getParams(); // return the parameters for onelab
 	public native int setParam(String type, String name, String value); // change a parameters
+	public native int setStringOption(String category, String name, String value);
+	public native int setDoubleOption(String category, String name, double value);
+	public native int setIntegerOption(String category, String name, int value);
+	public native String getStringOption(String category, String name);
+	public native double getDoubleOption(String category, String name);
+	public native int getIntegerOption(String category, String name);
 	public native String[] getPView(); // get a list of PViews
 	public native void setPView(int position, int intervalsType,int visible,int nbIso); // Change options for a PView
 	public native int onelabCB(String action); // Call onelab
@@ -77,22 +81,6 @@ public class Gmsh {
 	{
 		this.eventHandler(ptr, 10, 0, 0);
 	}
-	public void showGeom(boolean show)
-	{
-		this.setShow(ptr, "geom", show);
-	}
-	public void showMesh(boolean show)
-	{
-		this.setShow(ptr, "mesh", show);
-	}
-	public boolean showMesh() 
-	{
-		return this.isShow(ptr, "mesh");
-	}
-	public boolean showGeom() 
-	{
-		return this.isShow(ptr, "geom");
-	}
 	public long getOnelab() {
 		return this.onelab;
 	}
diff --git a/contrib/mobile/Android/src/org/geuz/onelab/MainActivity.java b/contrib/mobile/Android/src/org/geuz/onelab/MainActivity.java
index c5ddabe6812dafe7ba0ee64227a8b9b462190c24..bfa0e5be23ac907f5137cf74b962852c80393f00 100644
--- a/contrib/mobile/Android/src/org/geuz/onelab/MainActivity.java
+++ b/contrib/mobile/Android/src/org/geuz/onelab/MainActivity.java
@@ -8,11 +8,11 @@ import android.os.AsyncTask;
 import android.os.Bundle;
 import android.os.Handler;
 import android.os.Vibrator;
+import android.app.ActionBar;
 import android.app.Activity;
 import android.app.AlertDialog;
 import android.app.Dialog;
 import android.app.ProgressDialog;
-
 import android.content.Context;
 import android.content.DialogInterface;
 import android.content.Intent;
@@ -57,7 +57,8 @@ public class MainActivity extends Activity {
 	private ArrayList<String> errors;
 	private Dialog errorDialog;
 	private Gmsh gmsh;
-	private Button run, reset;
+	private Button reset;
+	private MenuItem runStopItem;
 	private UndragableViewPager pager;
 	private List<Parameter> params = new ArrayList<Parameter>();
 	private SeparatedListView paramListView;
@@ -66,9 +67,10 @@ public class MainActivity extends Activity {
     @Override
     public void onCreate(Bundle savedInstanceState) {
     	super.onCreate(savedInstanceState);
-    	
-    	getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
+       	getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
 				WindowManager.LayoutParams.FLAG_FULLSCREEN);
+       	ActionBar actionBar = getActionBar();
+        actionBar.setDisplayHomeAsUpEnabled(true);
     	errors = new ArrayList<String>();
     	LinearLayout layout = new LinearLayout(this);
     	loading = new ProgressDialog(this);
@@ -78,7 +80,7 @@ public class MainActivity extends Activity {
     	pager.setLayoutParams(new LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT));
     	pager.setAdapter(new AdaptedPager());
     	pager.setOffscreenPageLimit(2);
-    	pager.setCurrentItem(0);
+    	pager.setCurrentItem(1);
     	layout.addView(pager);
     	dialogBuilder = new AlertDialog.Builder(this);
 
@@ -114,69 +116,62 @@ public class MainActivity extends Activity {
     @Override
     public boolean onCreateOptionsMenu(Menu menu) {
     	super.onCreateOptionsMenu(menu);
-    	MenuItem listitem = menu.add(Menu.NONE, Menu.NONE, Menu.NONE, R.string.menu_list);
-        if(getResources().getConfiguration().orientation == Configuration.ORIENTATION_PORTRAIT || screenInch() < 7)
-        {
-        	MenuItem paramitem = menu.add(Menu.NONE, Menu.NONE, Menu.NONE, R.string.menu_settings);
-        	paramitem.setIcon(R.drawable.ic_settings);
-        	paramitem.setShowAsAction(MenuItem.SHOW_AS_ACTION_IF_ROOM);
-        }
-        MenuItem modelitem = menu.add(Menu.NONE, Menu.NONE, Menu.NONE, R.string.menu_model);
-        MenuItem postitem = menu.add(Menu.NONE, Menu.NONE, Menu.NONE, R.string.menu_postpro);
-        SubMenu viewitem = menu.addSubMenu(R.string.menu_view);
-        
-        
-        listitem.setIcon(R.drawable.ic_list);
-        modelitem.setIcon(R.drawable.ic_mesh);
-        listitem.setShowAsAction(MenuItem.SHOW_AS_ACTION_IF_ROOM);
-        modelitem.setShowAsAction(MenuItem.SHOW_AS_ACTION_IF_ROOM);
-        postitem.setShowAsAction(MenuItem.SHOW_AS_ACTION_COLLAPSE_ACTION_VIEW);
-        
-        viewitem.add(R.string.menu_view_x);
-        viewitem.add(R.string.menu_view_y);
-        viewitem.add(R.string.menu_view_z);
-        viewitem.add(R.string.menu_view_scale);
-        viewitem.add(R.string.menu_view_translation);
+    	
+    	/*	Menu:
+    	 * 		< (Back to model list)
+    	 * 		Model (show the model, only on small screen)
+    	 * 		Parameters
+    	 * 			> Model (show the model's parameters)
+    	 * 			> Display (show display options)
+    	 * 		Run/Stop (Compute / stop)
+    	 */
+    	SubMenu parametersItems = menu.addSubMenu(R.string.menu_parameters);
+    	parametersItems.add(R.string.menu_parameters_model);
+    	parametersItems.add(R.string.menu_parameters_display);
+    	MenuItem parametersItem = parametersItems.getItem();
+    	parametersItem.setShowAsAction(MenuItem.SHOW_AS_ACTION_IF_ROOM);
+    	if(screenInch() < 7) {
+    		MenuItem modelItem = menu.add(R.string.menu_model);
+    		modelItem.setShowAsAction(MenuItem.SHOW_AS_ACTION_IF_ROOM);
+    	}
+    	runStopItem = menu.add(R.string.menu_run);
+    	runStopItem.setShowAsAction(MenuItem.SHOW_AS_ACTION_ALWAYS);
         return true;
     }
     @Override
     public boolean onMenuItemSelected(int featureId, MenuItem item) {
-    	if(item.getTitle().equals(getString(R.string.menu_settings)))
+    	if(item.getTitle().equals(getString(R.string.menu_parameters_model))) {
     		pager.setCurrentItem(0, true);
-    	else if(item.getTitle().equals(getString(R.string.menu_list))) {
-    		if(this.compute)
-    			loading.show();
-    		else
-    			this.finish();
+    		// TODO change fragment on pager 0
+    	}
+    	else if (item.getTitle().equals(getString(R.string.menu_parameters_display))) {
+    		pager.setCurrentItem(0, true);
+    		// TODO change fragment on pager 0
     	}
-    	else if (item.getTitle().equals(getString(R.string.menu_model)))
+    	else if (item.getTitle().equals(getString(R.string.menu_model))) {
     		pager.setCurrentItem(1, true);
-    	else if(item.getTitle().equals(getString(R.string.menu_postpro))){
-    		dialogBuilder.setTitle("Post proccessing")
-    			.setView(postproView())
-				.setPositiveButton("Ok", null)
-				.show();
     	}
-    	else if(item.getTitle().equals(getString(R.string.menu_view_x))){
-    		renderer.viewX();
-    		glView.requestRender();
+    	else if(item.getTitle().equals(getString(R.string.menu_run))){
+    		pager.setCurrentItem(1, true);
+    		item.setTitle(R.string.menu_stop);
+    		if(compute) {
+    			loading.show();
+    		}
+    		else {
+    			new Run().execute();
+    			pager.setCurrentItem(1, true);
+    		}
     	}
-		else if(item.getTitle().equals(getString(R.string.menu_view_y))){
-			renderer.viewY();
-			glView.requestRender();
-		}
-		else if(item.getTitle().equals(getString(R.string.menu_view_z))){
-			renderer.viewZ();
-			glView.requestRender();
-		}
-		/*else if(item.getTitle().equals(getString(R.string.menu_view_scale))){
-			glView.resetScale();
-			glView.requestRender();
+    	else if(item.getTitle().equals(getString(R.string.menu_stop))){
+    		gmsh.onelabCB("stop");
+    	}
+		else if(item.getItemId() == android.R.id.home)
+		{
+			if(this.compute)
+    			loading.show();
+    		else
+    			this.finish();
 		}
-		else if(item.getTitle().equals(getString(R.string.menu_view_translation))){
-			renderer.translate(0, 0, 0);
-			glView.requestRender();
-		}*/ // TODO
     	return super.onMenuItemSelected(featureId, item);
     }
     
@@ -305,7 +300,7 @@ public class MainActivity extends Activity {
 		}
     }
     
-    private View postproView() {
+    /*private View postproView() {
     	ScrollView scroll = new ScrollView(this);
     	scroll.setLayoutParams(new LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.WRAP_CONTENT));
     	String[] PViews = gmsh.getPView();
@@ -412,26 +407,13 @@ public class MainActivity extends Activity {
     	}
     	scroll.addView(table);
     	return scroll;
-    }
+    }*/
     
     private View paramView(Context ctx) {
     	LinearLayout layout = new LinearLayout(this);
     	layout.setOrientation(LinearLayout.VERTICAL);
-    	run = new Button(ctx);
     	reset = new Button(ctx);
-    	run.setText("Run");
     	reset.setText("Reset");
-    	run.setOnClickListener(new OnClickListener() {
-    		public void onClick(View v) {
-	    		if(compute) {
-	    			loading.show();
-	    		}
-	    		else {
-	    			new Run().execute();
-	    			pager.setCurrentItem(1, true);
-	    		}
-    		}
-    	});
     	reset.setOnClickListener(new OnClickListener() {public void onClick(View v) {
     		if(gmsh.onelabCB("reset") == 1){
     			getAvailableParam();
@@ -439,33 +421,29 @@ public class MainActivity extends Activity {
 			}
 			pager.setCurrentItem(0, true);
 		}});
-    	LinearLayout onelabBtns = new LinearLayout(this);
-    	onelabBtns.setOrientation(LinearLayout.HORIZONTAL);
     	LinearLayout.LayoutParams lp = new LinearLayout.LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.MATCH_PARENT);
     	lp.weight = 1;
-    	onelabBtns.addView(reset, lp);
-    	onelabBtns.addView(run, lp);
     	CheckBox showMesh = new CheckBox(ctx);
     	showMesh.setText("Show the mesh");
-    	showMesh.setChecked(gmsh.showMesh());
+    	showMesh.setChecked((gmsh.getDoubleOption("Mesh", "SurfaceEdges") > 0.));
     	showMesh.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
 			
 			public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
-				gmsh.showMesh(isChecked);
+				gmsh.setDoubleOption("Mesh", "SurfaceEdges", (isChecked)?1. : 0.);
 				glView.requestRender();
 			}
 		});
     	CheckBox showGeom = new CheckBox(ctx);
     	showGeom.setText("Show the geometry");
-    	showGeom.setChecked(gmsh.showGeom());
+    	showGeom.setChecked((gmsh.getDoubleOption("Geometry", "Lines") > 0.));
     	showGeom.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
 			
 			public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
-				gmsh.showGeom(isChecked);
+				gmsh.setDoubleOption("Geometry", "Lines", (isChecked)?1. : 0.);
 				glView.requestRender();
 			}
 		});
-    	paramListView = new SeparatedListView(ctx, new View[] {showMesh, showGeom, onelabBtns});
+    	paramListView = new SeparatedListView(ctx, new View[] {showMesh, showGeom, reset});
     	paramListView.setDividerHeight(0);
     	for(Parameter p : params)
     	{
@@ -491,12 +469,10 @@ public class MainActivity extends Activity {
     			
     			public void onClick(DialogInterface dialog, int which) {
     				gmsh.onelabCB("stop");
-    				run.setEnabled(false);
     			}
     		});
     		loading.setMessage("...");
     		loading.show();
-    		//run.setText("Show progress");
     		reset.setEnabled(false);
     		super.onPreExecute();
     	}
@@ -509,16 +485,12 @@ public class MainActivity extends Activity {
 
 		@Override
 		protected void onPostExecute(Integer[] result) {
-			Vibrator v = (Vibrator) getSystemService(Context.VIBRATOR_SERVICE);
-			if(!v.hasVibrator()) // TODO Do not commit this line !
-				v.vibrate(350);
+			//(Vibrator) getSystemService(Context.VIBRATOR_SERVICE).vibrate(350);
+			runStopItem.setTitle(R.string.menu_run);
 			reset.setEnabled(true);
-			run.setEnabled(true);
-			//run.setText("Run"); // TODO this seems break the ViewPager
-			glView.requestRender();
-			super.onPostExecute(result);
 			loading.dismiss();
 			compute = false;
+			super.onPostExecute(result);
 		}
     	
     }
diff --git a/contrib/mobile/androidGModel.cpp b/contrib/mobile/androidGModel.cpp
index 2ccfac331a8a95d419a8df625ba667e779aea0e7..7df30ae77686176614a56e7d66d7c98764503f70 100644
--- a/contrib/mobile/androidGModel.cpp
+++ b/contrib/mobile/androidGModel.cpp
@@ -5,6 +5,7 @@
 #define  LOGI(...)  __android_log_print(ANDROID_LOG_INFO,LOG_TAG,__VA_ARGS__)
 #define  LOGE(...)  __android_log_print(ANDROID_LOG_ERROR,LOG_TAG,__VA_ARGS__)
 
+#include <gmsh/Gmsh.h>
 #include <gmsh/GModel.h>
 #include <gmsh/onelab.h>
 #include <gmsh/onelabUtils.h>
@@ -149,22 +150,84 @@ JNIEXPORT void JNICALL Java_org_geuz_onelab_Gmsh_eventHandler
 {
 	((drawContext *)jptr)->eventHandler(jevent, jx, jy);
 }
-JNIEXPORT void JNICALL Java_org_geuz_onelab_Gmsh_setShow
-  (JNIEnv *env, jobject obj, jlong jptr, jstring jwhat, jboolean value)
+JNIEXPORT jint JNICALL Java_org_geuz_onelab_Gmsh_setStringOption
+  (JNIEnv *env, jobject obj, jstring c, jstring n, jstring v)
 {
-	const char*  what = env->GetStringUTFChars(jwhat, NULL);
-	if(strcmp(what, "mesh") == 0)
-		((drawContext *)jptr)->showMesh(value);
-	else if(strcmp(what, "geom") == 0)
-		((drawContext *)jptr)->showGeom(value);
+	const char* tmp;
+	tmp = env->GetStringUTFChars(v, NULL);
+	const std::string value(tmp, strlen(tmp));
+	env->ReleaseStringUTFChars(v, tmp);
+	tmp = env->GetStringUTFChars(n, NULL);
+	const std::string name(tmp, strlen(tmp));
+	env->ReleaseStringUTFChars(n, tmp);
+	tmp = env->GetStringUTFChars(c, NULL);
+	std::string category(tmp, strlen(tmp));
+	env->ReleaseStringUTFChars(c, tmp);
+	GmshSetOption(category, name, value, 0);
 }
-JNIEXPORT jboolean JNICALL Java_org_geuz_onelab_Gmsh_isShow
-  (JNIEnv *env, jobject obj, jlong jptr, jstring jwhat)
+JNIEXPORT jint JNICALL Java_org_geuz_onelab_Gmsh_setDoubleOption
+  (JNIEnv *env, jobject obj, jstring c, jstring n, jdouble v)
 {
-	const char*  what = env->GetStringUTFChars(jwhat, NULL);
-	if(strcmp(what, "mesh") == 0) return ((drawContext *)jptr)->isShowedMesh();
-	else if(strcmp(what, "geom") == 0) return ((drawContext *)jptr)->isShowedGeom();
-	else return false;
+	const char* tmp;
+	tmp = env->GetStringUTFChars(n, NULL);
+	const std::string name(tmp, strlen(tmp));
+	env->ReleaseStringUTFChars(n, tmp);
+	tmp = env->GetStringUTFChars(c, NULL);
+	const std::string category(tmp, strlen(tmp));
+	env->ReleaseStringUTFChars(c, tmp);
+	GmshSetOption(category, name, (double)v);
+}
+JNIEXPORT jint JNICALL Java_org_geuz_onelab_Gmsh_setIntegerOption
+  (JNIEnv *env, jobject obj, jstring c, jstring n, jint v)
+{
+	const char* tmp;
+	tmp = env->GetStringUTFChars(n, NULL);
+	const std::string name(tmp, strlen(tmp));
+	env->ReleaseStringUTFChars(n, tmp);
+	tmp = env->GetStringUTFChars(c, NULL);
+	const std::string category(tmp, strlen(tmp));
+	env->ReleaseStringUTFChars(c, tmp);
+	GmshSetOption(category, name, (unsigned int)v);
+}
+JNIEXPORT jstring JNICALL Java_org_geuz_onelab_Gmsh_getStringOption
+  (JNIEnv *env, jobject obj, jstring c, jstring n)
+{
+	const char* tmp;
+	tmp = env->GetStringUTFChars(n, NULL);
+	const std::string name(tmp, strlen(tmp));
+	env->ReleaseStringUTFChars(n, tmp);
+	tmp = env->GetStringUTFChars(c, NULL);
+	const std::string category(tmp, strlen(tmp));
+	std::string value;
+	GmshGetOption(category, name, value);
+	return env->NewStringUTF(value.c_str());
+	
+}
+JNIEXPORT jdouble JNICALL Java_org_geuz_onelab_Gmsh_getDoubleOption
+  (JNIEnv *env, jobject obj, jstring c, jstring n)
+{
+	const char* tmp;
+	tmp = env->GetStringUTFChars(n, NULL);
+	const std::string name(tmp, strlen(tmp));
+	env->ReleaseStringUTFChars(n, tmp);
+	tmp = env->GetStringUTFChars(c, NULL);
+	const std::string category(tmp, strlen(tmp));
+	double value;
+	GmshGetOption(category, name, value);
+	return value;
+}
+JNIEXPORT jint JNICALL Java_org_geuz_onelab_Gmsh_getIntegerOption
+  (JNIEnv *env, jobject obj, jstring c, jstring n)
+{
+	const char* tmp;
+	tmp = env->GetStringUTFChars(n, NULL);
+	const std::string name(tmp, strlen(tmp));
+	env->ReleaseStringUTFChars(n, tmp);
+	tmp = env->GetStringUTFChars(c, NULL);
+	const std::string category(tmp, strlen(tmp));
+	unsigned int value;
+	GmshGetOption(category, name, value, 0);
+	return value;
 }
 JNIEXPORT jlong JNICALL Java_org_geuz_onelab_Gmsh_getOnelabInstance
   (JNIEnv *env , jobject obj)
diff --git a/contrib/mobile/androidGModel.h b/contrib/mobile/androidGModel.h
index 9c6150e398a653f410ab176ceb8a6ce13cc4ec1c..12aa59d2e8f73535b2fac5bb75f44a4cf4be98d8 100644
--- a/contrib/mobile/androidGModel.h
+++ b/contrib/mobile/androidGModel.h
@@ -51,19 +51,51 @@ JNIEXPORT void JNICALL Java_org_geuz_onelab_Gmsh_eventHandler
 
 /*
  * Class:     org_geuz_onelab_Gmsh
- * Method:    setShow
- * Signature: (JLjava/lang/String;Z)V
+ * Method:    setStringOption
+ * Signature: (Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)I
  */
-JNIEXPORT void JNICALL Java_org_geuz_onelab_Gmsh_setShow
-  (JNIEnv *, jobject, jlong, jstring, jboolean);
+JNIEXPORT jint JNICALL Java_org_geuz_onelab_Gmsh_setStringOption
+  (JNIEnv *, jobject, jstring, jstring, jstring);
 
 /*
  * Class:     org_geuz_onelab_Gmsh
- * Method:    isShow
- * Signature: (JLjava/lang/String;)Z
+ * Method:    setDoubleOption
+ * Signature: (Ljava/lang/String;Ljava/lang/String;D)I
  */
-JNIEXPORT jboolean JNICALL Java_org_geuz_onelab_Gmsh_isShow
-  (JNIEnv *, jobject, jlong, jstring);
+JNIEXPORT jint JNICALL Java_org_geuz_onelab_Gmsh_setDoubleOption
+  (JNIEnv *, jobject, jstring, jstring, jdouble);
+
+/*
+ * Class:     org_geuz_onelab_Gmsh
+ * Method:    setIntegerOption
+ * Signature: (Ljava/lang/String;Ljava/lang/String;I)I
+ */
+JNIEXPORT jint JNICALL Java_org_geuz_onelab_Gmsh_setIntegerOption
+  (JNIEnv *, jobject, jstring, jstring, jint);
+
+/*
+ * Class:     org_geuz_onelab_Gmsh
+ * Method:    getStringOption
+ * Signature: (Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;
+ */
+JNIEXPORT jstring JNICALL Java_org_geuz_onelab_Gmsh_getStringOption
+  (JNIEnv *, jobject, jstring, jstring);
+
+/*
+ * Class:     org_geuz_onelab_Gmsh
+ * Method:    getDoubleOption
+ * Signature: (Ljava/lang/String;Ljava/lang/String;)D
+ */
+JNIEXPORT jdouble JNICALL Java_org_geuz_onelab_Gmsh_getDoubleOption
+  (JNIEnv *, jobject, jstring, jstring);
+
+/*
+ * Class:     org_geuz_onelab_Gmsh
+ * Method:    getIntegerOption
+ * Signature: (Ljava/lang/String;Ljava/lang/String;)I
+ */
+JNIEXPORT jint JNICALL Java_org_geuz_onelab_Gmsh_getIntegerOption
+  (JNIEnv *, jobject, jstring, jstring);
 
 /*
  * Class:     org_geuz_onelab_Gmsh
diff --git a/contrib/mobile/drawContext.cpp b/contrib/mobile/drawContext.cpp
index c3424e0fc012f1d5ada77386bad35fd1f2f6f906..f3dfa6fbf9b55d97d3593f9c15843586cfdb47cd 100644
--- a/contrib/mobile/drawContext.cpp
+++ b/contrib/mobile/drawContext.cpp
@@ -53,7 +53,7 @@ static bool locked = false;
 drawContext::drawContext()
 {
 	GmshInitialize();
-    GmshSetOption("General", "Terminal", 1.0);
+	GmshSetOption("General", "Terminal", 1.0);
 	onelabUtils::setFirstComputationFlag(false);
 	for(int i = 0; i < 3; i++){
 		_translate[i] = 0.;
@@ -565,14 +565,10 @@ void drawContext::drawView()
 	checkGlError("Draw axes");
 	this->drawPost();
 	checkGlError("Draw post-pro");
-	if(CTX::instance()->geom.draw){
-		this->drawGeom();
-		checkGlError("Draw geometry");
-	}
-	if(CTX::instance()->mesh.draw){
-		this->drawMesh();
-		checkGlError("Draw mesh");
-	}
+	this->drawGeom();
+	checkGlError("Draw geometry");
+	this->drawMesh();
+	checkGlError("Draw mesh");
 	this->drawScale();
 	checkGlError("Draw scales");
 }
diff --git a/contrib/mobile/drawContext.h b/contrib/mobile/drawContext.h
index 9845b0d42ae869b9b0e34ea2af86dfcb36319cb8..4ea981b43e02131a2f47b88cba2f5c84b386dbba 100644
--- a/contrib/mobile/drawContext.h
+++ b/contrib/mobile/drawContext.h
@@ -58,11 +58,6 @@ public:
 	void drawPost();
 	void drawScale();
 	void useGradiant(bool gradiant=true) {_gradiant = gradiant;}
-	void showGeom(bool show=true) {CTX::instance()->geom.draw = show;}
-	void showMesh(bool show=true) {CTX::instance()->mesh.draw = show;}
-	void fillMesh(bool show=true) {_fillMesh = show;}
-	bool isShowedMesh(){return CTX::instance()->mesh.draw;}
-	bool isShowedGeom(){return CTX::instance()->geom.draw;}
 };
 
 #endif
diff --git a/contrib/mobile/drawGeom.cpp b/contrib/mobile/drawGeom.cpp
index 38991bff33be0bdde8ffd2e40552d281844e5980..131fb116f35d8ab782a43cf8adabb274b28614bf 100644
--- a/contrib/mobile/drawGeom.cpp
+++ b/contrib/mobile/drawGeom.cpp
@@ -78,6 +78,8 @@ void drawGeomFace(GFace *f)
 }
 void drawContext::drawGeom()
 {
+	if(!CTX::instance()->geom.draw) return;
+
 	for(unsigned int i=0; i<GModel::list.size(); i++) {
 		GModel *m = GModel::list[i];
 		if(!m->getVisibility()) continue;