diff --git a/contrib/mobile/Android/AndroidManifest.xml b/contrib/mobile/Android/AndroidManifest.xml
index b576adcd31ac5be62515d52e27095d3bd0c17b8b..b430e252b54b04b86c84e05a4d15a405adcba77d 100644
--- a/contrib/mobile/Android/AndroidManifest.xml
+++ b/contrib/mobile/Android/AndroidManifest.xml
@@ -28,12 +28,11 @@
         </activity>
         <activity
             android:name=".ModelList"
-            android:label="@string/title_activity_main">
-        </activity>
+            android:label="@string/title_activity_main" />
         <activity
             android:name=".MainActivity"
             android:label="@string/title_activity_main"
-            android:screenOrientation="landscape">
+            android:screenOrientation="landscape" >
             <intent-filter>
 				<action android:name="android.intent.action.VIEW" />
 				<category android:name="android.intent.category.DEFAULT" />
@@ -44,11 +43,12 @@
         </activity>
          <activity
             android:name=".PostProcessingActivity"
-            android:label="@string/title_activity_main">
-        </activity>
+            android:label="@string/title_activity_main"
+            android:screenOrientation="landscape" />
         <activity 
             android:name=".OptionsActivity"
-            android:label="@string/title_activity_options"></activity>
+            android:label="@string/title_activity_options"
+            android:screenOrientation="landscape" />
     </application>
 
 </manifest>
\ No newline at end of file
diff --git a/contrib/mobile/Android/src/org/geuz/onelab/ParameterNumber.java b/contrib/mobile/Android/src/org/geuz/onelab/ParameterNumber.java
index 1569652433b5ebf380ce5379873986c2fca9f26c..6b75613657c2d11ad5e427d4757cde81c05cdb7c 100644
--- a/contrib/mobile/Android/src/org/geuz/onelab/ParameterNumber.java
+++ b/contrib/mobile/Android/src/org/geuz/onelab/ParameterNumber.java
@@ -82,7 +82,8 @@ public class ParameterNumber extends Parameter{
 		if(value == _value) return;
 		_value = value;
 		_changed = true;
-		//if(mListener != null) mListener.OnParameterChanged();
+		_gmsh.setParam(getType(), getName(), String.valueOf(value));
+		if(mListener != null) mListener.OnParameterChanged();
 	}
 	public void setMin(double min) {_min = min;this.update();}
 	public void setMax(double max) {_max = max;this.update();}
@@ -170,8 +171,7 @@ public class ParameterNumber extends Parameter{
 			_spinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
 				public void onNothingSelected(AdapterView<?> arg0) {}
 				public void onItemSelected(AdapterView<?> parent, View view, int pos, long id) {
-					_gmsh.setParam(getType(), getName(), String.valueOf(_values.get(pos)));
-					if(mListener != null) mListener.OnParameterChanged();
+					setValue(_values.get(pos));
 				}
 			});
 		}
@@ -180,18 +180,12 @@ public class ParameterNumber extends Parameter{
 			_bar.setEnabled(!_readOnly);
 			_bar.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() {
 				public void onStopTrackingTouch(SeekBar seekBar) {
-					double value = getMin() + (getMax() - getMin())*seekBar.getProgress()/100;
-					value = (value >= _min)? value : _min;
-					_gmsh.setParam(getType(), getName(), String.valueOf(value));
-					if(mListener != null) mListener.OnParameterChanged();
-					
+					setValue(getMin() + (getMax() - getMin())*seekBar.getProgress()/100);
 				}
 				
 				public void onStartTrackingTouch(SeekBar seekBar) {}
 				
-				public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {
-					
-				}
+				public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {}
 			});
 		}
 		else if(_checkbox != null) {
@@ -201,8 +195,7 @@ public class ParameterNumber extends Parameter{
 			_checkbox.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
 				
 				public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
-					_gmsh.setParam(getType(), getName(), (isChecked)? "1" : "0");
-					if(mListener != null) mListener.OnParameterChanged();
+					setValue((isChecked)? 1 : 0);
 				}
 			});
 		}
@@ -216,8 +209,7 @@ public class ParameterNumber extends Parameter{
 						InputMethodManager imm = (InputMethodManager)_context.getSystemService(
 							      Context.INPUT_METHOD_SERVICE);
 						imm.hideSoftInputFromWindow(_edittext.getWindowToken(), 0);
-						_gmsh.setParam(getType(), getName(), String.valueOf(_value));
-						if(mListener != null) mListener.OnParameterChanged();
+						setValue(_value);
 						_edittext.clearFocus();
 						return true;
 					}
@@ -229,18 +221,15 @@ public class ParameterNumber extends Parameter{
 			_edittext.addTextChangedListener(new TextWatcher() {
 				
 				public void onTextChanged(CharSequence s, int start, int before, int count) {
-					double value = 1;
 					try {
-						if(s.length() < 1) value = 1;
-						else value = Double.parseDouble(s.toString());
+						if(s.length() < 1) _value = 1;
+						else _value = Double.parseDouble(s.toString());
 					}
 					catch(NumberFormatException e)
 					{
-						value = 1;
+						_value = 1;
 						//_edittext.setText("");
 					}
-					_value = value;
-					_changed = true;
 				}
 				
 				public void beforeTextChanged(CharSequence s, int start, int count, int after) {} // UNUSED Auto-generated method stub
diff --git a/contrib/mobile/Android/src/org/geuz/onelab/ParameterString.java b/contrib/mobile/Android/src/org/geuz/onelab/ParameterString.java
index eb65c783472e8d857514026d943cf70a93a3b1a5..491b89a39c295088622ca4d05eeda06c72e70200 100644
--- a/contrib/mobile/Android/src/org/geuz/onelab/ParameterString.java
+++ b/contrib/mobile/Android/src/org/geuz/onelab/ParameterString.java
@@ -48,10 +48,10 @@ public class ParameterString extends Parameter{
 	
 	public void setValue(int index) {
 		if(index == _index) return;
-		if(mListener != null) mListener.OnParameterChanged();
 		_changed = true;
 		_index = index;
-		this.update();
+		_gmsh.setParam(getType(), getName(), _choices.get(_index));
+		if(mListener != null) mListener.OnParameterChanged();
 	}
 	public void setValue(String value) {
 		int index = _choices.indexOf(value);
@@ -60,10 +60,10 @@ public class ParameterString extends Parameter{
 			index = _choices.indexOf(value);
 		}
 		if(index == _index) return;
-		if(mListener != null) mListener.OnParameterChanged();
 		_changed = true;
 		_index = index;
-		this.update();
+		_gmsh.setParam(getType(), getName(), value);
+		if(mListener != null) mListener.OnParameterChanged();
 	}
 	public void setKind(String kind) {_kind = kind;}
 	public void addChoices(String choice) {
@@ -109,11 +109,8 @@ public class ParameterString extends Parameter{
 
 				public void onNothingSelected(AdapterView<?> arg0) {}
 
-				public void onItemSelected(AdapterView<?> parent, View view,
-						int pos, long id) {
-					if(getValue() == getChoices().get(pos)) return;
+				public void onItemSelected(AdapterView<?> parent, View view, int pos, long id) {
 					setValue(pos);
-					_gmsh.setParam(getType(), getName(), String.valueOf(getValue()));
 				}
 
 			});
@@ -136,10 +133,11 @@ public class ParameterString extends Parameter{
 			});
 			_edittext.addTextChangedListener(new TextWatcher() {
 				
-				public void onTextChanged(CharSequence s, int start, int before, int count) { } // UNUSED Auto-generated method stub
+				public void onTextChanged(CharSequence s, int start, int before, int count) {
+					_choices.clear(); _choices.add(s.toString());
+				}
 				
-				public void beforeTextChanged(CharSequence s, int start, int count,
-						int after) {} // UNUSED Auto-generated method stub
+				public void beforeTextChanged(CharSequence s, int start, int count, int after) {} // UNUSED Auto-generated method stub
 				
 				public void afterTextChanged(Editable s) {
 					_gmsh.setParam(getType(), getName(), _choices.get(0));