diff --git a/contrib/mobile/iOS/Onelab.xcodeproj/project.pbxproj b/contrib/mobile/iOS/Onelab.xcodeproj/project.pbxproj
index ea43ba67aa1f9c5a366fb5ad423931e8a06baba5..13482edb65aadf2772b9237bf285c4fdfaebb55d 100644
--- a/contrib/mobile/iOS/Onelab.xcodeproj/project.pbxproj
+++ b/contrib/mobile/iOS/Onelab.xcodeproj/project.pbxproj
@@ -16,11 +16,6 @@
 		9C96084B1712C16400E1D4A0 /* AppDelegate.mm in Sources */ = {isa = PBXBuildFile; fileRef = 9C96084A1712C16300E1D4A0 /* AppDelegate.mm */; };
 		9C9608511712C16400E1D4A0 /* MasterViewController.mm in Sources */ = {isa = PBXBuildFile; fileRef = 9C9608501712C16400E1D4A0 /* MasterViewController.mm */; };
 		9C9608541712C16400E1D4A0 /* DetailViewController.mm in Sources */ = {isa = PBXBuildFile; fileRef = 9C9608531712C16400E1D4A0 /* DetailViewController.mm */; };
-		9C96085C1712C16400E1D4A0 /* SenTestingKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 9C96085B1712C16400E1D4A0 /* SenTestingKit.framework */; };
-		9C96085D1712C16400E1D4A0 /* UIKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 9C96083A1712C16300E1D4A0 /* UIKit.framework */; };
-		9C96085E1712C16400E1D4A0 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 9C96083C1712C16300E1D4A0 /* Foundation.framework */; };
-		9C9608661712C16400E1D4A0 /* InfoPlist.strings in Resources */ = {isa = PBXBuildFile; fileRef = 9C9608641712C16400E1D4A0 /* InfoPlist.strings */; };
-		9C9608691712C16400E1D4A0 /* OnelabTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 9C9608681712C16400E1D4A0 /* OnelabTests.m */; };
 		9C9608741712C47200E1D4A0 /* EAGLView.mm in Sources */ = {isa = PBXBuildFile; fileRef = 9C9608731712C47200E1D4A0 /* EAGLView.mm */; };
 		9C9608991712C7B600E1D4A0 /* Accelerate.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 9C9608981712C7B600E1D4A0 /* Accelerate.framework */; };
 		9C96089B1712C7BE00E1D4A0 /* OpenGLES.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 9C96089A1712C7BE00E1D4A0 /* OpenGLES.framework */; };
@@ -45,16 +40,6 @@
 		9CEAECC717A91CD20014D229 /* ModelListController.mm in Sources */ = {isa = PBXBuildFile; fileRef = 9CEAECC617A91CD20014D229 /* ModelListController.mm */; };
 /* End PBXBuildFile section */
 
-/* Begin PBXContainerItemProxy section */
-		9C96085F1712C16400E1D4A0 /* PBXContainerItemProxy */ = {
-			isa = PBXContainerItemProxy;
-			containerPortal = 9C96082D1712C16300E1D4A0 /* Project object */;
-			proxyType = 1;
-			remoteGlobalIDString = 9C9608351712C16300E1D4A0;
-			remoteInfo = Onelab;
-		};
-/* End PBXContainerItemProxy section */
-
 /* Begin PBXFileReference section */
 		9C1C10F817BA5E7D00BFD483 /* PostProViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PostProViewController.h; sourceTree = "<group>"; };
 		9C1C10F917BA5E7D00BFD483 /* PostProViewController.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = PostProViewController.mm; sourceTree = "<group>"; };
@@ -71,12 +56,7 @@
 		9C9608501712C16400E1D4A0 /* MasterViewController.mm */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; path = MasterViewController.mm; sourceTree = "<group>"; usesTabs = 1; };
 		9C9608521712C16400E1D4A0 /* DetailViewController.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = DetailViewController.h; sourceTree = "<group>"; usesTabs = 1; };
 		9C9608531712C16400E1D4A0 /* DetailViewController.mm */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; path = DetailViewController.mm; sourceTree = "<group>"; usesTabs = 1; };
-		9C96085A1712C16400E1D4A0 /* OnelabTests.octest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = OnelabTests.octest; sourceTree = BUILT_PRODUCTS_DIR; };
 		9C96085B1712C16400E1D4A0 /* SenTestingKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = SenTestingKit.framework; path = Library/Frameworks/SenTestingKit.framework; sourceTree = DEVELOPER_DIR; };
-		9C9608631712C16400E1D4A0 /* OnelabTests-Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = "OnelabTests-Info.plist"; sourceTree = "<group>"; };
-		9C9608651712C16400E1D4A0 /* en */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = en; path = en.lproj/InfoPlist.strings; sourceTree = "<group>"; };
-		9C9608671712C16400E1D4A0 /* OnelabTests.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = OnelabTests.h; sourceTree = "<group>"; };
-		9C9608681712C16400E1D4A0 /* OnelabTests.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = OnelabTests.m; sourceTree = "<group>"; };
 		9C9608721712C47200E1D4A0 /* EAGLView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = EAGLView.h; sourceTree = "<group>"; usesTabs = 1; };
 		9C9608731712C47200E1D4A0 /* EAGLView.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = EAGLView.mm; sourceTree = "<group>"; usesTabs = 1; };
 		9C9608981712C7B600E1D4A0 /* Accelerate.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Accelerate.framework; path = System/Library/Frameworks/Accelerate.framework; sourceTree = SDKROOT; };
@@ -129,16 +109,6 @@
 			);
 			runOnlyForDeploymentPostprocessing = 0;
 		};
-		9C9608561712C16400E1D4A0 /* Frameworks */ = {
-			isa = PBXFrameworksBuildPhase;
-			buildActionMask = 2147483647;
-			files = (
-				9C96085C1712C16400E1D4A0 /* SenTestingKit.framework in Frameworks */,
-				9C96085D1712C16400E1D4A0 /* UIKit.framework in Frameworks */,
-				9C96085E1712C16400E1D4A0 /* Foundation.framework in Frameworks */,
-			);
-			runOnlyForDeploymentPostprocessing = 0;
-		};
 /* End PBXFrameworksBuildPhase section */
 
 /* Begin PBXGroup section */
@@ -148,7 +118,6 @@
 				9C9F8BCE174B5A23004332C5 /* ic_launcher.png */,
 				9C9F8BCC174B5A1B004332C5 /* ic_launcher_retina.png */,
 				9C9608401712C16300E1D4A0 /* Onelab */,
-				9C9608611712C16400E1D4A0 /* OnelabTests */,
 				9C9608391712C16300E1D4A0 /* Frameworks */,
 				9C9608371712C16300E1D4A0 /* Products */,
 			);
@@ -158,7 +127,6 @@
 			isa = PBXGroup;
 			children = (
 				9C9608361712C16300E1D4A0 /* Onelab.app */,
-				9C96085A1712C16400E1D4A0 /* OnelabTests.octest */,
 			);
 			name = Products;
 			sourceTree = "<group>";
@@ -221,25 +189,6 @@
 			path = Onelab;
 			sourceTree = "<group>";
 		};
-		9C9608611712C16400E1D4A0 /* OnelabTests */ = {
-			isa = PBXGroup;
-			children = (
-				9C9608671712C16400E1D4A0 /* OnelabTests.h */,
-				9C9608681712C16400E1D4A0 /* OnelabTests.m */,
-				9C9608621712C16400E1D4A0 /* Supporting Files */,
-			);
-			path = OnelabTests;
-			sourceTree = "<group>";
-		};
-		9C9608621712C16400E1D4A0 /* Supporting Files */ = {
-			isa = PBXGroup;
-			children = (
-				9C9608631712C16400E1D4A0 /* OnelabTests-Info.plist */,
-				9C9608641712C16400E1D4A0 /* InfoPlist.strings */,
-			);
-			name = "Supporting Files";
-			sourceTree = "<group>";
-		};
 		9CF1C1F017AA8A46002CD2E3 /* Supporting Files */ = {
 			isa = PBXGroup;
 			children = (
@@ -270,25 +219,6 @@
 			productReference = 9C9608361712C16300E1D4A0 /* Onelab.app */;
 			productType = "com.apple.product-type.application";
 		};
-		9C9608591712C16400E1D4A0 /* OnelabTests */ = {
-			isa = PBXNativeTarget;
-			buildConfigurationList = 9C96086F1712C16400E1D4A0 /* Build configuration list for PBXNativeTarget "OnelabTests" */;
-			buildPhases = (
-				9C9608551712C16400E1D4A0 /* Sources */,
-				9C9608561712C16400E1D4A0 /* Frameworks */,
-				9C9608571712C16400E1D4A0 /* Resources */,
-				9C9608581712C16400E1D4A0 /* ShellScript */,
-			);
-			buildRules = (
-			);
-			dependencies = (
-				9C9608601712C16400E1D4A0 /* PBXTargetDependency */,
-			);
-			name = OnelabTests;
-			productName = OnelabTests;
-			productReference = 9C96085A1712C16400E1D4A0 /* OnelabTests.octest */;
-			productType = "com.apple.product-type.bundle";
-		};
 /* End PBXNativeTarget section */
 
 /* Begin PBXProject section */
@@ -311,7 +241,6 @@
 			projectRoot = "";
 			targets = (
 				9C9608351712C16300E1D4A0 /* Onelab */,
-				9C9608591712C16400E1D4A0 /* OnelabTests */,
 			);
 		};
 /* End PBXProject section */
@@ -329,32 +258,8 @@
 			);
 			runOnlyForDeploymentPostprocessing = 0;
 		};
-		9C9608571712C16400E1D4A0 /* Resources */ = {
-			isa = PBXResourcesBuildPhase;
-			buildActionMask = 2147483647;
-			files = (
-				9C9608661712C16400E1D4A0 /* InfoPlist.strings in Resources */,
-			);
-			runOnlyForDeploymentPostprocessing = 0;
-		};
 /* End PBXResourcesBuildPhase section */
 
-/* Begin PBXShellScriptBuildPhase section */
-		9C9608581712C16400E1D4A0 /* ShellScript */ = {
-			isa = PBXShellScriptBuildPhase;
-			buildActionMask = 2147483647;
-			files = (
-			);
-			inputPaths = (
-			);
-			outputPaths = (
-			);
-			runOnlyForDeploymentPostprocessing = 0;
-			shellPath = /bin/sh;
-			shellScript = "# Run the unit tests in this test bundle.\n\"${SYSTEM_DEVELOPER_DIR}/Tools/RunUnitTests\"\n";
-		};
-/* End PBXShellScriptBuildPhase section */
-
 /* Begin PBXSourcesBuildPhase section */
 		9C9608321712C16300E1D4A0 /* Sources */ = {
 			isa = PBXSourcesBuildPhase;
@@ -380,33 +285,9 @@
 			);
 			runOnlyForDeploymentPostprocessing = 0;
 		};
-		9C9608551712C16400E1D4A0 /* Sources */ = {
-			isa = PBXSourcesBuildPhase;
-			buildActionMask = 2147483647;
-			files = (
-				9C9608691712C16400E1D4A0 /* OnelabTests.m in Sources */,
-			);
-			runOnlyForDeploymentPostprocessing = 0;
-		};
 /* End PBXSourcesBuildPhase section */
 
-/* Begin PBXTargetDependency section */
-		9C9608601712C16400E1D4A0 /* PBXTargetDependency */ = {
-			isa = PBXTargetDependency;
-			target = 9C9608351712C16300E1D4A0 /* Onelab */;
-			targetProxy = 9C96085F1712C16400E1D4A0 /* PBXContainerItemProxy */;
-		};
-/* End PBXTargetDependency section */
-
 /* Begin PBXVariantGroup section */
-		9C9608641712C16400E1D4A0 /* InfoPlist.strings */ = {
-			isa = PBXVariantGroup;
-			children = (
-				9C9608651712C16400E1D4A0 /* en */,
-			);
-			name = InfoPlist.strings;
-			sourceTree = "<group>";
-		};
 		9C9608AA1712EF0900E1D4A0 /* iPadStoryboard.storyboard */ = {
 			isa = PBXVariantGroup;
 			children = (
@@ -437,6 +318,7 @@
 				CLANG_WARN_ENUM_CONVERSION = YES;
 				CLANG_WARN_INT_CONVERSION = YES;
 				CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
+				CODE_SIGN_IDENTITY = "iPhone Developer";
 				"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
 				COPY_PHASE_STRIP = NO;
 				GCC_C_LANGUAGE_STANDARD = gnu99;
@@ -452,6 +334,8 @@
 				GCC_WARN_UNINITIALIZED_AUTOS = YES;
 				GCC_WARN_UNUSED_VARIABLE = YES;
 				IPHONEOS_DEPLOYMENT_TARGET = 5.1;
+				PROVISIONING_PROFILE = "";
+				"PROVISIONING_PROFILE[sdk=iphoneos*]" = "";
 				SDKROOT = iphoneos;
 				TARGETED_DEVICE_FAMILY = 2;
 			};
@@ -468,6 +352,7 @@
 				CLANG_WARN_ENUM_CONVERSION = YES;
 				CLANG_WARN_INT_CONVERSION = YES;
 				CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
+				CODE_SIGN_IDENTITY = "iPhone Developer";
 				"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
 				COPY_PHASE_STRIP = YES;
 				GCC_C_LANGUAGE_STANDARD = gnu99;
@@ -477,6 +362,8 @@
 				GCC_WARN_UNUSED_VARIABLE = YES;
 				IPHONEOS_DEPLOYMENT_TARGET = 5.1;
 				OTHER_CFLAGS = "-DNS_BLOCK_ASSERTIONS=1";
+				PROVISIONING_PROFILE = "";
+				"PROVISIONING_PROFILE[sdk=iphoneos*]" = "";
 				SDKROOT = iphoneos;
 				TARGETED_DEVICE_FAMILY = 2;
 				VALIDATE_PRODUCT = YES;
@@ -487,8 +374,6 @@
 			isa = XCBuildConfiguration;
 			buildSettings = {
 				CLANG_ENABLE_OBJC_ARC = YES;
-				CODE_SIGN_IDENTITY = "iPhone Developer";
-				"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
 				FRAMEWORK_SEARCH_PATHS = (
 					"$(inherited)",
 					"\"$(SRCROOT)/Onelab/frameworks\"",
@@ -500,8 +385,6 @@
 				LIBRARY_SEARCH_PATHS = "$(inherited)";
 				OTHER_CFLAGS = "-DNS_BLOCK_ASSERTIONS=1";
 				PRODUCT_NAME = "$(TARGET_NAME)";
-				PROVISIONING_PROFILE = "";
-				"PROVISIONING_PROFILE[sdk=iphoneos*]" = "";
 				TARGETED_DEVICE_FAMILY = "1,2";
 				VALID_ARCHS = armv7;
 				WRAPPER_EXTENSION = app;
@@ -512,8 +395,6 @@
 			isa = XCBuildConfiguration;
 			buildSettings = {
 				CLANG_ENABLE_OBJC_ARC = YES;
-				CODE_SIGN_IDENTITY = "iPhone Developer";
-				"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
 				FRAMEWORK_SEARCH_PATHS = (
 					"$(inherited)",
 					"\"$(SRCROOT)/../../getdp-iOS\"",
@@ -527,48 +408,12 @@
 				IPHONEOS_DEPLOYMENT_TARGET = 5.1;
 				LIBRARY_SEARCH_PATHS = "$(inherited)";
 				PRODUCT_NAME = "$(TARGET_NAME)";
-				PROVISIONING_PROFILE = "";
-				"PROVISIONING_PROFILE[sdk=iphoneos*]" = "";
 				TARGETED_DEVICE_FAMILY = "1,2";
 				VALID_ARCHS = armv7;
 				WRAPPER_EXTENSION = app;
 			};
 			name = Release;
 		};
-		9C9608701712C16400E1D4A0 /* Debug */ = {
-			isa = XCBuildConfiguration;
-			buildSettings = {
-				BUNDLE_LOADER = "$(BUILT_PRODUCTS_DIR)/Onelab.app/Onelab";
-				FRAMEWORK_SEARCH_PATHS = (
-					"\"$(SDKROOT)/Developer/Library/Frameworks\"",
-					"\"$(DEVELOPER_LIBRARY_DIR)/Frameworks\"",
-				);
-				GCC_PRECOMPILE_PREFIX_HEADER = YES;
-				GCC_PREFIX_HEADER = "Onelab/Onelab-Prefix.pch";
-				INFOPLIST_FILE = "OnelabTests/OnelabTests-Info.plist";
-				PRODUCT_NAME = "$(TARGET_NAME)";
-				TEST_HOST = "$(BUNDLE_LOADER)";
-				WRAPPER_EXTENSION = octest;
-			};
-			name = Debug;
-		};
-		9C9608711712C16400E1D4A0 /* Release */ = {
-			isa = XCBuildConfiguration;
-			buildSettings = {
-				BUNDLE_LOADER = "$(BUILT_PRODUCTS_DIR)/Onelab.app/Onelab";
-				FRAMEWORK_SEARCH_PATHS = (
-					"\"$(SDKROOT)/Developer/Library/Frameworks\"",
-					"\"$(DEVELOPER_LIBRARY_DIR)/Frameworks\"",
-				);
-				GCC_PRECOMPILE_PREFIX_HEADER = YES;
-				GCC_PREFIX_HEADER = "Onelab/Onelab-Prefix.pch";
-				INFOPLIST_FILE = "OnelabTests/OnelabTests-Info.plist";
-				PRODUCT_NAME = "$(TARGET_NAME)";
-				TEST_HOST = "$(BUNDLE_LOADER)";
-				WRAPPER_EXTENSION = octest;
-			};
-			name = Release;
-		};
 /* End XCBuildConfiguration section */
 
 /* Begin XCConfigurationList section */
@@ -590,15 +435,6 @@
 			defaultConfigurationIsVisible = 0;
 			defaultConfigurationName = Release;
 		};
-		9C96086F1712C16400E1D4A0 /* Build configuration list for PBXNativeTarget "OnelabTests" */ = {
-			isa = XCConfigurationList;
-			buildConfigurations = (
-				9C9608701712C16400E1D4A0 /* Debug */,
-				9C9608711712C16400E1D4A0 /* Release */,
-			);
-			defaultConfigurationIsVisible = 0;
-			defaultConfigurationName = Release;
-		};
 /* End XCConfigurationList section */
 	};
 	rootObject = 9C96082D1712C16300E1D4A0 /* Project object */;
diff --git a/contrib/mobile/iOS/Onelab/MasterViewController.mm b/contrib/mobile/iOS/Onelab/MasterViewController.mm
index 6c19837356c1a333528ef7ac723b7085b2d8912e..743db7c9bcd2827bd6ed9564aaa89e0c5150d3e2 100644
--- a/contrib/mobile/iOS/Onelab/MasterViewController.mm
+++ b/contrib/mobile/iOS/Onelab/MasterViewController.mm
@@ -37,9 +37,10 @@
         
     }
     else {
-        runButton = [[UIBarButtonItem alloc] initWithTitle:@"Run" style:UIBarButtonItemStyleBordered target:self action:@selector(runWithNewParameter)];
+        runButton = [[UIBarButtonItem alloc] initWithTitle:@"Run" style:UIBarButtonItemStyleBordered target:self action:@selector(runWithNewParameter:)];
         [runButton setTitle:@"Run"];
     }
+	runButton.possibleTitles = [NSSet setWithObjects:@"Run", @"Stop", nil];
     self.navigationItem.leftItemsSupplementBackButton = YES; // Only for iPhone/iPod
     self.navigationItem.leftBarButtonItem = runButton;
 
@@ -184,20 +185,18 @@
     [[NSNotificationCenter defaultCenter] postNotificationName:@"requestRender" object:nil];
 }
 
-- (void)runWithNewParameter
+- (void)runWithNewParameter:(UIBarButtonItem *)sender
 {
     dispatch_async( dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
         AppDelegate *appDelegate = (AppDelegate *)[UIApplication sharedApplication].delegate;
         appDelegate->compute = YES;
-        [runButton setTitle:@"Stop"];
-        [self.navigationController.view setNeedsDisplay];
-        [runButton setAction:@selector(stopRunning)];
+        [sender setTitle:@"Stop"];
+		[sender setAction:@selector(stopRunning)];
         self.navigationItem.rightBarButtonItem.enabled = NO;
         onelab_cb("compute");
         if([[UIDevice currentDevice].model isEqualToString:@"iPad"] || [[UIDevice currentDevice].model isEqualToString:@"iPad Simulator"]){
-            [runButton setTitle:@"Run"];
-            [self.navigationController.view setNeedsDisplay];
-            [runButton setAction:@selector(runWithNewParameter)];
+            [sender setTitle:@"Run"];
+            [sender setAction:@selector(runWithNewParameter:)];
             self.navigationItem.rightBarButtonItem.enabled = YES;
         }
         appDelegate->compute = NO;
@@ -249,12 +248,12 @@
     [cell addSubview:[tmp getLabel]];
     if([tmp isKindOfClass:[parameterStringList class]]) {
         parameterStringList *param = (parameterStringList *)tmp;
-        [param setFrame:CGRectMake(20, cell.frame.size.height/2+5, cell.frame.size.width - 40, cell.frame.size.height/2)];
+        [param setFrame:CGRectMake(20, 35, cell.frame.size.width - 40, 162)];
         [cell addSubview:[param getList]];
     }
     else if([tmp isKindOfClass:[parameterNumberList class]]) {
         parameterNumberList *param = (parameterNumberList *)tmp;
-        [param setFrame:CGRectMake(20, cell.frame.size.height/2+5, cell.frame.size.width - 40, cell.frame.size.height/2)];
+        [param setFrame:CGRectMake(20, 35, cell.frame.size.width - 40, 162)];
         [cell addSubview:[param getList]];
     }
     else if([tmp isKindOfClass:[parameterNumberCheckbox class]]) {
diff --git a/contrib/mobile/iOS/Onelab/parameter.h b/contrib/mobile/iOS/Onelab/parameter.h
index 3db4bf00320e53faa8756f77a38ee298b9d5dd98..329e2afc87ea2b1557608f60a5c63c98b3126c83 100644
--- a/contrib/mobile/iOS/Onelab/parameter.h
+++ b/contrib/mobile/iOS/Onelab/parameter.h
@@ -24,6 +24,7 @@
 -(UILabel *)getLabel;
 -(bool)isReadOnly;
 +(double)getHeight;
+-(void)refresh;
 @end
 
 @interface parameterStringList : parameter <UIPickerViewDataSource, UIPickerViewDelegate>
diff --git a/contrib/mobile/iOS/Onelab/parameter.mm b/contrib/mobile/iOS/Onelab/parameter.mm
index 6df5bb3dc351dd90c32c6ba7124dd711a6545e4c..961adc30c6def136322c69ff7f8d1ba32b65b345 100644
--- a/contrib/mobile/iOS/Onelab/parameter.mm
+++ b/contrib/mobile/iOS/Onelab/parameter.mm
@@ -19,6 +19,10 @@
     }
     return self;
 }
+-(void)refresh
+{
+	return;
+}
 -(NSString *)getName
 {
     return name;
@@ -58,11 +62,21 @@
         picker.showsSelectionIndicator = YES;
         [picker setDataSource:self];
         [picker setDelegate:self];
-        for(int row=0;row<string.getChoices().size();row++)
-            if(string.getValue() == string.getChoices()[row])[picker selectRow:row inComponent:0 animated:NO];
+		bool valueInChoices = true;
+        for(int row=0;row<string.getChoices().size();row++){
+            if(string.getValue() == string.getChoices()[row]) {
+				[picker selectRow:row inComponent:0 animated:NO];
+				valueInChoices = false;
+			}
+		}
+		if(valueInChoices) [picker selectRow:string.getChoices().size() inComponent:0 animated:YES];
     }
     return self;
 }
+-(void)refresh
+{
+	[picker reloadAllComponents];
+}
 -(NSInteger)numberOfComponentsInPickerView:(UIPickerView *)pickerView
 {
     return 1;
@@ -72,6 +86,9 @@
     std::vector<onelab::string> string;
     onelab::server::instance()->get(string,[name UTF8String]);
     if(string.size() < 1) return 0;
+	bool valueInChoices = true;
+	for(int row=0;row<string[0].getChoices().size();row++) if(string[0].getValue() == string[0].getChoices()[row])valueInChoices=false;
+	if(valueInChoices) return string[0].getChoices().size()+1;
     return string[0].getChoices().size();
 }
 -(NSString *)pickerView:(UIPickerView *)pickerView titleForRow:(NSInteger)row forComponent:(NSInteger)component
@@ -79,6 +96,7 @@
     std::vector<onelab::string> string;
     onelab::server::instance()->get(string,[name UTF8String]);
     if(string.size() < 1) return @"NULL";
+	if(row >= string[0].getChoices().size()) return [NSString stringWithCString:string[0].getValue().c_str() encoding:[NSString defaultCStringEncoding]];
     return [NSString stringWithCString:string[0].getChoices()[row].c_str() encoding:[NSString defaultCStringEncoding]];
 }
 -(void)pickerView:(UIPickerView *)pickerView didSelectRow:(NSInteger)row inComponent:(NSInteger)component
@@ -109,7 +127,7 @@
 }
 +(double)getHeight
 {
-    return 200.0f;
+    return 210.0f;
 }
 @end
 
@@ -131,6 +149,10 @@
     }
     return self;
 }
+-(void)refresh
+{
+	[picker reloadAllComponents];
+}
 -(NSInteger)numberOfComponentsInPickerView:(UIPickerView *)pickerView
 {
     return 1;
@@ -177,7 +199,7 @@
 }
 +(double)getHeight
 {
-    return 200.0f;
+    return 210.0f;
 }
 @end
 
@@ -196,6 +218,12 @@
     }
     return self;
 }
+-(void)refresh
+{
+	std::vector<onelab::number> number;
+    onelab::server::instance()->get(number,[name UTF8String]);
+    [checkbox setSelected:(number[0].getValue() == 1)];
+}
 -(void) valueChange:(UISwitch *)sender
 {
     std::vector<onelab::number> number;
@@ -246,6 +274,15 @@
     }
     return self;
 }
+-(void)refresh
+{
+	std::vector<onelab::number> number;
+    onelab::server::instance()->get(number,[name UTF8String]);
+    if(number.size() < 1) return;
+	[slider setMaximumValue:number[0].getMax()];
+	[slider setMinimumValue:number[0].getMin()];
+	[slider setValue:number[0].getValue()];
+}
 -(void)sliderValueChanged:(UISlider *)sender
 {
     std::vector<onelab::number> number;
@@ -292,9 +329,24 @@
         [textbox setKeyboardType:UIKeyboardTypeNumberPad];
         [textbox setText:[NSString stringWithFormat:@"%f", number.getValue()]];
         [textbox setDelegate:self];
+        UIToolbar* numberToolbar = [[UIToolbar alloc]initWithFrame:CGRectMake(0, 0, 320, 50)];
+        numberToolbar.barStyle = UIBarStyleBlackTranslucent;
+        numberToolbar.items = [NSArray arrayWithObjects:
+                               [[UIBarButtonItem alloc]initWithBarButtonSystemItem:UIBarButtonSystemItemFlexibleSpace target:nil action:nil],
+                               [[UIBarButtonItem alloc]initWithTitle:@"Apply" style:UIBarButtonItemStyleDone target:self action:@selector(doneWithNumberPad)],
+                               nil];
+        [numberToolbar sizeToFit];
+        textbox.inputAccessoryView = numberToolbar;
     }
     return self;
 }
+-(void)refresh
+{
+	std::vector<onelab::number> number;
+    onelab::server::instance()->get(number,[name UTF8String]);
+    if(number.size() < 1) return;
+	[textbox setText:[NSString stringWithFormat:@"%f", number[0].getValue()]];
+}
 -(BOOL)textFieldShouldEndEditing:(UITextField *)textField
 {
     std::vector<onelab::number> number;
@@ -308,6 +360,10 @@
 {
     return [textField endEditing:YES];
 }
+-(void)doneWithNumberPad
+{
+    [textbox endEditing:YES];
+}
 -(void)setFrame:(CGRect)frame
 {
     [textbox setFrame:frame];