diff --git a/contrib/mobile/Android/AndroidManifest.xml b/contrib/mobile/Android/AndroidManifest.xml
index 924a421517914fd3ebf87512426e04e799748ba2..b576adcd31ac5be62515d52e27095d3bd0c17b8b 100644
--- a/contrib/mobile/Android/AndroidManifest.xml
+++ b/contrib/mobile/Android/AndroidManifest.xml
@@ -2,7 +2,7 @@
     package="org.geuz.onelab"
     android:versionCode="1"
     android:versionName="1.0"
-    android:installLocation="preferExternal"
+    android:installLocation="auto"
     >
 
     <uses-feature android:glEsVersion="0x00010000" android:required="true"></uses-feature>
@@ -42,6 +42,13 @@
 				<data android:scheme="file"  android:host="*" android:pathPattern=".*\\.pro" android:mimeType="*/*"  />
 			</intent-filter>
         </activity>
+         <activity
+            android:name=".PostProcessingActivity"
+            android:label="@string/title_activity_main">
+        </activity>
+        <activity 
+            android:name=".OptionsActivity"
+            android:label="@string/title_activity_options"></activity>
     </application>
 
 </manifest>
\ No newline at end of file
diff --git a/contrib/mobile/Android/res/layout/activity_twopane.xml b/contrib/mobile/Android/res/layout/activity_twopane.xml
index 842d0b543e4a2e22f49d0ed871e7710d397cde9a..2b02a4d5e827833dc0c8c49ef4678877ecc916ee 100644
--- a/contrib/mobile/Android/res/layout/activity_twopane.xml
+++ b/contrib/mobile/Android/res/layout/activity_twopane.xml
@@ -11,6 +11,7 @@
     
 	<FrameLayout android:id="@+id/parameter_fragment"
 	    android:name="org.geuz.onelab.OptionsDisplayFragment"
+	    android:layout_marginTop="48dp"
 	    android:layout_width="0dp"
 	    android:layout_height="match_parent"
 	    android:layout_weight="1" />
diff --git a/contrib/mobile/Android/res/layout/fragment_options_display.xml b/contrib/mobile/Android/res/layout/fragment_options_display.xml
index 860d37227bc80f874cc534d07fb8150493ebea03..beba95bd6f41b165e4fa4441fc1040f0b0f46a72 100644
--- a/contrib/mobile/Android/res/layout/fragment_options_display.xml
+++ b/contrib/mobile/Android/res/layout/fragment_options_display.xml
@@ -2,7 +2,6 @@
 <org.geuz.onelab.SeparatedListView xmlns:android="http://schemas.android.com/apk/res/android"
     android:layout_width="match_parent"
     android:layout_height="match_parent"
-    android:layout_marginTop="48dp"
     android:id="@+id/displayOptionsList">
     
 
diff --git a/contrib/mobile/Android/res/values/strings.xml b/contrib/mobile/Android/res/values/strings.xml
index 5677f9fbba95d8c9a321f11b8f7e380300f691fc..982ffae332443539a2ae5cd3fe65850a190ab4f7 100644
--- a/contrib/mobile/Android/res/values/strings.xml
+++ b/contrib/mobile/Android/res/values/strings.xml
@@ -6,8 +6,8 @@
     <string name="button_recalculate_param">Recalulate with new parameters</string>
     <string name="dialog_title_choosefile">Choose a file</string>
     <string name="error_nosdcard">No SDcard found on your device</string>
-    <string name="title_parameter">Settings</string>
     <string name="title_activity_main">Onelab</string>
+    <string name="title_activity_options">Parameters</string>
     <string name="error_nomshfile">No compatible files or directories in this folder</string>
     <string name="menu_model">Show the model</string>
     <string name="menu_parameters">Parameters</string>
@@ -17,5 +17,5 @@
     <string name="menu_stop">Stop</string>
     <string name="postpro_intervalstype">Intervals type</string>
     <string name="postpro_intervals">Intervals</string>
-	<string name="postpro_raizez">Raise (Z)</string>
+	<string name="postpro_raisez">Raise (Z)</string>
 </resources>
\ No newline at end of file
diff --git a/contrib/mobile/Android/src/org/geuz/onelab/MainActivity.java b/contrib/mobile/Android/src/org/geuz/onelab/MainActivity.java
index 37b26dc91a2f4982992e2f670f46701dee3c7897..766379f71f60f4967711d5dbbd18e10f73dec15c 100644
--- a/contrib/mobile/Android/src/org/geuz/onelab/MainActivity.java
+++ b/contrib/mobile/Android/src/org/geuz/onelab/MainActivity.java
@@ -17,6 +17,7 @@ import android.graphics.drawable.ColorDrawable;
 import android.os.AsyncTask;
 import android.os.Bundle;
 import android.os.Handler;
+import android.os.Parcelable;
 import android.app.FragmentTransaction;
 import android.view.Menu;
 import android.view.MenuItem;
@@ -63,23 +64,18 @@ public class MainActivity extends Activity{
     	else
     		this.finish();
     	_twoPane = (findViewById(R.id.parameter_fragment) != null);
+    	_modelFragment = ModelFragment.newInstance(_gmsh);
+		getFragmentManager().beginTransaction().add(R.id.model_fragment, _modelFragment).commit();
     	if(_twoPane) {
     		_optionsFragment = OptionsFragment.newInstance(_gmsh);
     		getFragmentManager().beginTransaction().add(R.id.parameter_fragment, _optionsFragment).commit();
-    		_modelFragment = ModelFragment.newInstance(_gmsh);
-    		getFragmentManager().beginTransaction().add(R.id.model_fragment, _modelFragment).commit();
+    		_optionsFragment.setOnOptionsChangedListener(new OptionsFragment.OnOptionsChangedListener() {
+    			
+    			public void OnOptionsChanged() {
+    				_modelFragment.requestRender();
+    			}
+    		});
     	}
-    	else {
-    		_optionsFragment = OptionsFragment.newInstance(_gmsh);
-    		_modelFragment = ModelFragment.newInstance(_gmsh);
-    		getFragmentManager().beginTransaction().add(R.id.model_fragment, _modelFragment).commit();
-    	}
-    	_optionsFragment.setOnOptionsChangedListener(new OptionsFragment.OnOptionsChangedListener() {
-			
-			public void OnOptionsChanged() {
-				_modelFragment.requestRender();
-			}
-		});
 	}
 	
 	@Override
@@ -101,18 +97,10 @@ public class MainActivity extends Activity{
 	@Override
     public boolean onMenuItemSelected(int featureId, MenuItem item) {
     	if (item.getTitle().equals(getString(R.string.menu_parameters))) {
-    		item.setTitle(R.string.menu_model);
-    		FragmentTransaction ft = getFragmentManager().beginTransaction();
-            ft.replace(R.id.model_fragment, _optionsFragment);
-            ft.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_OPEN);
-            ft.commit();
-    	}
-    	else if (item.getTitle().equals(getString(R.string.menu_model))) {
-    		item.setTitle(R.string.menu_parameters);
-    		FragmentTransaction ft = getFragmentManager().beginTransaction();
-            ft.replace(R.id.model_fragment, _modelFragment);
-            ft.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_CLOSE);
-            ft.commit();
+    		Intent intent = new Intent(this, OptionsActivity.class);
+		    intent.putExtra("Gmsh", (Parcelable)_gmsh);
+			startActivity(intent);
+			_modelFragment.requestRender();
     	}
     	else if(item.getTitle().equals(getString(R.string.menu_run))){
     		if(_switchFragmentMenuItem != null && _switchFragmentMenuItem.getTitle().equals(getString(R.string.menu_model))) {
diff --git a/contrib/mobile/Android/src/org/geuz/onelab/OptionsActivity.java b/contrib/mobile/Android/src/org/geuz/onelab/OptionsActivity.java
new file mode 100644
index 0000000000000000000000000000000000000000..1c769ebc102eb7576166f7b2f6f7f7648bd30e6a
--- /dev/null
+++ b/contrib/mobile/Android/src/org/geuz/onelab/OptionsActivity.java
@@ -0,0 +1,27 @@
+package org.geuz.onelab;
+
+import android.app.Activity;
+import android.os.Bundle;
+import android.view.MenuItem;
+
+public class OptionsActivity extends Activity {
+
+	@Override
+	protected void onCreate(Bundle savedInstanceState) {
+		super.onCreate(savedInstanceState);
+		setContentView(R.layout.activity_fragment);
+		Bundle extra = getIntent().getExtras();
+		Gmsh gmsh = extra.getParcelable("Gmsh");
+		getActionBar().setDisplayHomeAsUpEnabled(true);
+		getActionBar().setTitle(R.string.title_activity_options);
+		OptionsFragment optionsFragment = OptionsFragment.newInstance(gmsh);
+		getFragmentManager().beginTransaction().add(R.id.model_fragment, optionsFragment).commit();
+	}
+
+	@Override
+	public boolean onMenuItemSelected(int featureId, MenuItem item) {
+		if(item.getItemId() == android.R.id.home)
+			this.finish();
+		return super.onMenuItemSelected(featureId, item);
+	}
+}
diff --git a/contrib/mobile/Android/src/org/geuz/onelab/OptionsModelFragment.java b/contrib/mobile/Android/src/org/geuz/onelab/OptionsModelFragment.java
index c3b82a6878e869b3def205920c15f32c4ef832e4..007aa6e7c97e6088f624e1628914878c7784fe68 100644
--- a/contrib/mobile/Android/src/org/geuz/onelab/OptionsModelFragment.java
+++ b/contrib/mobile/Android/src/org/geuz/onelab/OptionsModelFragment.java
@@ -43,6 +43,7 @@ public class OptionsModelFragment extends Fragment{
 	
 	public void refresh() {
 		if(_gmsh == null) return;
+		if(_listView != null){ _listView.clear(); params.clear();}
 		this.getAvailableParam();
 		if(_listView != null) _listView.refresh();
 	}
@@ -51,12 +52,18 @@ public class OptionsModelFragment extends Fragment{
     	String[] tmp = _gmsh.getParams();
 		for(String s : tmp){ // for each parameters in ONEALB
 			boolean found = false;
-			for(Parameter p : params){ // for each parameters
+			for(int i = 0; i<params.size(); i++){ // for each parameters
+				Parameter p = params.get(i);
 				if(s.split(Character.toString((char)0x03))[2].equals(p.getName())){ // the parameter already exist, just refresh it
-					if(p.getType().equals("ParameterNumber"))
-						((ParameterNumber)p).fromString(s);
-					else if(p.getType().equals("ParameterString"))
-						((ParameterString)p).fromString(s);
+					if(p.getType().equals("ParameterNumber")){
+						if(((ParameterNumber)p).fromString(s) == -1){
+							params.remove(i);
+						}
+					}
+					else if(p.getType().equals("ParameterString")){
+						if(((ParameterString)p).fromString(s) == -1)
+							params.remove(i);
+					}
 					found = true;
 					break;
 				}
diff --git a/contrib/mobile/Android/src/org/geuz/onelab/ParameterNumber.java b/contrib/mobile/Android/src/org/geuz/onelab/ParameterNumber.java
index 2170219437a619cedcf1e08a8cd1698bf5b79ead..5864797deea069be929690b34ad3d3e3574563ef 100644
--- a/contrib/mobile/Android/src/org/geuz/onelab/ParameterNumber.java
+++ b/contrib/mobile/Android/src/org/geuz/onelab/ParameterNumber.java
@@ -77,10 +77,9 @@ public class ParameterNumber extends Parameter{
 			return;
 		}
 		if(value == _value) return;
-		if(mListener != null) mListener.OnParameterChanged();
-		_changed = true;
 		_value = value;
-		this.update();
+		_changed = true;
+		if(mListener != null) mListener.OnParameterChanged();
 	}
 	public void setMin(double min) {_min = min;this.update();}
 	public void setMax(double max) {_max = max;this.update();}
@@ -142,6 +141,8 @@ public class ParameterNumber extends Parameter{
 			this.update();
 			return pos;
 		}
+		if(_choices != null)_choices.clear();
+		if(_values != null) _values.clear();
 		for(int i=0; i<nLabels && nChoix == nLabels; i++)
 		{
 			double val = Double.parseDouble(infos[pos++]); // choice
@@ -164,15 +165,11 @@ public class ParameterNumber extends Parameter{
 			paramLayout.addView(_spinner);
 			_spinner.setEnabled(!_readOnly);
 			_spinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
-
 				public void onNothingSelected(AdapterView<?> arg0) {}
-
-				public void onItemSelected(AdapterView<?> parent, View view,
-						int pos, long id) {
+				public void onItemSelected(AdapterView<?> parent, View view, int pos, long id) {
 					setValue(_values.get(pos));
 					_gmsh.setParam(getType(), getName(), String.valueOf(_values.get(pos)));
 				}
-
 			});
 		}
 		else if(_bar != null) {
diff --git a/contrib/mobile/Android/src/org/geuz/onelab/ParameterString.java b/contrib/mobile/Android/src/org/geuz/onelab/ParameterString.java
index 8b4801b90b35d241596f0493b83bea88ddbb7103..eb65c783472e8d857514026d943cf70a93a3b1a5 100644
--- a/contrib/mobile/Android/src/org/geuz/onelab/ParameterString.java
+++ b/contrib/mobile/Android/src/org/geuz/onelab/ParameterString.java
@@ -80,7 +80,6 @@ public class ParameterString extends Parameter{
 	public int getIndex() {return _index;}
 	public ArrayList<String> getChoices() {return _choices;}
 	public int fromString(String s){
-		_choices.clear();
 		int pos = super.fromString(s);
 		if(pos <= 0) return -1; // error
 		String[] infos = s.split(Character.toString((char)0x03));
@@ -91,6 +90,7 @@ public class ParameterString extends Parameter{
 		int nChoices = Integer.parseInt(infos[pos++]);
 		if(nChoices < 1 && _kind.equals("generic"))
 			_edittext = new EditText(_context);
+		if(_choices != null)_choices.clear();
 		for(int i=0;i<nChoices;i++) this.addChoices(infos[pos++]);
 		// ...
 		setValue(value);
diff --git a/contrib/mobile/androidGModel.cpp b/contrib/mobile/androidGModel.cpp
index 1f7a2a4487ca6e1d77274148d1cd8a1e393df636..629258807c8fbbefafc4213abb7ca6d407557d48 100644
--- a/contrib/mobile/androidGModel.cpp
+++ b/contrib/mobile/androidGModel.cpp
@@ -255,13 +255,17 @@ JNIEXPORT jint JNICALL Java_org_geuz_onelab_Gmsh_setParam
 	// Get the original param and then change the value
 	if(strcmp(type,"ParameterNumber") == 0){
 		std::vector<onelab::number> s;
-		if(onelab::server::instance()->get(s,  name)) s[0].setValue(atof(value));
-		onelab::server::instance()->set(s[0]);
+		if(onelab::server::instance()->get(s,  name)){
+			s[0].setValue(atof(value));
+			onelab::server::instance()->set(s[0]);
+		}
 	}
 	else if(strcmp(type,"ParameterString") == 0){
 		std::vector<onelab::string> s;
-		if(onelab::server::instance()->get(s,  name)) s[0].setValue(value);
-		onelab::server::instance()->set(s[0]);
+		if(onelab::server::instance()->get(s,  name)){
+			s[0].setValue(value);
+			onelab::server::instance()->set(s[0]);
+		}
 	}
 }