diff --git a/contrib/mobile/iOS/Onelab/EAGLView.mm b/contrib/mobile/iOS/Onelab/EAGLView.mm
index 6f0fcc8e7f3c4f6efec553c91f1a09a68075cf67..0155e55d4dd2ba7367d7df5be6bc50c4d9675b97 100644
--- a/contrib/mobile/iOS/Onelab/EAGLView.mm
+++ b/contrib/mobile/iOS/Onelab/EAGLView.mm
@@ -94,6 +94,7 @@
 
 - (void)layoutSubviews
 {
+	[super layoutSubviews];
     [EAGLContext setCurrentContext:context];
     [self destroyFramebuffer];
     [self createFramebuffer];
diff --git a/contrib/mobile/iOS/Onelab/ModelListController.h b/contrib/mobile/iOS/Onelab/ModelListController.h
index a1af92967c993e833b9a43589a9172f29e3c3bfd..8f4b300153a5527786b4f2a55017d9f19b933220 100644
--- a/contrib/mobile/iOS/Onelab/ModelListController.h
+++ b/contrib/mobile/iOS/Onelab/ModelListController.h
@@ -13,9 +13,10 @@
 @interface ModelListController : UITableViewController <NSXMLParserDelegate>
 {
     @private
-    NSMutableArray *models, *modelsName, *modelsDescription;
+    NSMutableArray *models;
     NSString *currentElement;
     NSMutableString *currentElementValue;
+	NSString *currentDir;
     NSString *selectedModel;
 }
 @property (nonatomic, retain) EAGLView *glView;
diff --git a/contrib/mobile/iOS/Onelab/ModelListController.mm b/contrib/mobile/iOS/Onelab/ModelListController.mm
index 7b8e36e643a4310130f776e3c343f79f25702f00..2f9ac9b65282a8deff9dd7877399e3d75d5d30a3 100644
--- a/contrib/mobile/iOS/Onelab/ModelListController.mm
+++ b/contrib/mobile/iOS/Onelab/ModelListController.mm
@@ -10,13 +10,12 @@
 #import "ModelListController.h"
 
 #import "Utils.h"
+#import "Model.h"
 
 @implementation ModelListController
 -(void)viewDidLoad
 {
     models = [[NSMutableArray alloc] init];
-    modelsName = [[NSMutableArray alloc] init];
-    modelsDescription = [[NSMutableArray alloc] init];
     NSString *docsPath = [Utils getApplicationDocumentsDirectory];
     
     [Utils copyRes];
@@ -25,16 +24,10 @@
         NSString *docPath = [NSString stringWithFormat:@"%@/%@/", docsPath, doc];
         BOOL isDir = NO; [[NSFileManager defaultManager] fileExistsAtPath:docPath isDirectory:&isDir];
         if(isDir){
-            [models addObject:doc];
             NSString *infos = [NSString stringWithFormat:@"%@%@", docPath, @"infos.xml"];
             if([[NSFileManager defaultManager] fileExistsAtPath:infos]) {
+				currentDir = docPath;
                 [self parseInfosFile:infos];
-                if(models.count > modelsName.count)[modelsName addObject:@""];
-                if(models.count > modelsDescription.count)[modelsDescription addObject:@""];
-            }
-            else {
-                [modelsName addObject:@""];
-                [modelsDescription addObject:@""];
             }
         }
     }
@@ -54,13 +47,13 @@
     UITableViewCell *cell;
     if(indexPath.row >= [models count])
         return cell;
-    NSString *modelName = [models objectAtIndex:indexPath.row];
-    cell = [tableView dequeueReusableCellWithIdentifier:modelName];
+    Model *m = [models objectAtIndex:indexPath.row];
+    cell = [tableView dequeueReusableCellWithIdentifier:[m getName]];
     if(cell != nil) return cell;
-    cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:modelName];
-    [cell.textLabel setText:(![[modelsName objectAtIndex:indexPath.row] isEqual:@""])? [modelsName objectAtIndex:indexPath.row] : [models objectAtIndex:indexPath.row]];
-    if(![[modelsDescription objectAtIndex:indexPath.row] isEqual:@""])
-        [cell.detailTextLabel setText:[modelsDescription objectAtIndex:indexPath.row]];
+    cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:[m getName]];
+    [cell.textLabel setText:[m getName]];
+    if([m getSummary] != nil) [cell.detailTextLabel setText:[m getSummary]];
+	if([m getPreview] != nil) cell.imageView.image = [m getPreview];
     cell.accessoryType = UITableViewCellAccessoryDisclosureIndicator;
     return cell;
 }
@@ -71,7 +64,7 @@
 -(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
 {
     AppDelegate *appDelegate = (AppDelegate *)[UIApplication sharedApplication].delegate;
-    selectedModel = [NSString stringWithFormat:@"%@/%@/%@.geo",[Utils getApplicationDocumentsDirectory],[models objectAtIndex:indexPath.row], [models objectAtIndex:indexPath.row]];
+    selectedModel = [[models objectAtIndex:indexPath.row] getFile];
     if([[UIDevice currentDevice].model isEqualToString:@"iPad"] || [[UIDevice currentDevice].model isEqualToString:@"iPad Simulator"]){
         appDelegate.splitViewController.initialModel = selectedModel;
         [UIView transitionWithView:appDelegate.window
@@ -113,11 +106,34 @@
 }
 -(void)parser:(NSXMLParser *)parser didEndElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName
 {
-    if([elementName isEqual:@"name"] && models.count > modelsName.count) [modelsName addObject:currentElementValue];
-    else if([elementName isEqual:@"description"] && models.count > modelsDescription.count) [modelsDescription addObject:currentElementValue];
+    if([elementName isEqual:@"title"]) {
+		Model *m = [[Model alloc] initWithName:currentElementValue];
+		[models addObject:m];
+	}
+	else {
+		if(models.count < 1) return;
+		if([elementName isEqual:@"summary"]) {
+			Model *m = [models lastObject];
+			[m setSummary:currentElementValue];
+		}
+		else if([elementName isEqual:@"file"]) {
+			Model *m = [models lastObject];
+			[m setFile:[NSString stringWithFormat:@"%@%@", currentDir, currentElementValue]];
+		}
+		else if([elementName isEqual:@"url"]) {
+			Model *m = [models lastObject];
+			[m setUrl:currentElementValue];
+		}
+		else if([elementName isEqual:@"preview"]) {
+			Model *m = [models lastObject];
+			[m setPreview:[NSString stringWithFormat:@"%@%@", currentDir, currentElementValue]];
+		}
+
+	}
     //[currentElementValue release];
     currentElementValue = nil;
 }
+
 -(void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
 {
     if ([[segue identifier] isEqualToString:@"showModelSegue"])
diff --git a/contrib/mobile/iOS/Onelab/ModelViewController.mm b/contrib/mobile/iOS/Onelab/ModelViewController.mm
index 927f2a67531fd5c81c0f6d41dd9f3e3881a5f1a5..af065d8885bf6f54293205c4eb531ea1235086b0 100644
--- a/contrib/mobile/iOS/Onelab/ModelViewController.mm
+++ b/contrib/mobile/iOS/Onelab/ModelViewController.mm
@@ -43,13 +43,9 @@
     }
 }
 
--(void)viewWillAppear:(BOOL)animated
-{
-	_runStopButton.frame = CGRectMake(self.view.frame.size.width - _runStopButton.frame.size.width - 7, 50, _runStopButton.frame.size.width, _runStopButton.frame.size.height );
-}
-
 -(void)viewDidAppear:(BOOL)animated
 {
+	_runStopButton.frame = CGRectMake(self.view.frame.size.width - _runStopButton.frame.size.width - 7, 50, _runStopButton.frame.size.width, _runStopButton.frame.size.height );
 	if(self.initialModel != nil){
 		UIAlertView* progressAlert = [[UIAlertView alloc] initWithTitle:@"Please wait..." message: @"The model is loading" delegate: self cancelButtonTitle: nil otherButtonTitles: nil];
 		[progressAlert show];
diff --git a/contrib/mobile/iOS/Onelab/PostProcessingViewController.mm b/contrib/mobile/iOS/Onelab/PostProcessingViewController.mm
index 307f60450cc49420aa3bfaa89accdc2631836fbf..e43b32537fc151305bfdcc2b1cdc0ee8e517bfcb 100644
--- a/contrib/mobile/iOS/Onelab/PostProcessingViewController.mm
+++ b/contrib/mobile/iOS/Onelab/PostProcessingViewController.mm
@@ -104,6 +104,10 @@
     [self setIntervalsType:nil];
     [self setIntervals:nil];
     [self setRaiseZ:nil];
+    [self setRaiseZ:nil];
+    [self setIntervals:nil];
+    [self setIntervalsType:nil];
+    [self setName:nil];
     [super viewDidUnload];
 }
 @end
diff --git a/contrib/mobile/iOS/Onelab/SplitViewController.mm b/contrib/mobile/iOS/Onelab/SplitViewController.mm
index d3ca0b1ffca3e5d835177b710e8aeddb0ce14815..7fd3dadb5c4f9b7750eddffee2cebb9354756cb9 100644
--- a/contrib/mobile/iOS/Onelab/SplitViewController.mm
+++ b/contrib/mobile/iOS/Onelab/SplitViewController.mm
@@ -45,7 +45,8 @@
 
 -(void)viewDidAppear:(BOOL)animated
 {
-	if(self.initialModel != nil) [modelViewController.glView load:self.initialModel];
+	modelViewController.initialModel = self.initialModel;
+	[super viewDidAppear:animated];
 }
 
 - (void)didReceiveMemoryWarning
diff --git a/contrib/mobile/iOS/Onelab/en.lproj/iPadStoryboard.storyboard b/contrib/mobile/iOS/Onelab/en.lproj/iPadStoryboard.storyboard
index 93c32e6924378761c08b1c47a2472a57a30cbdf8..913933205f2a319c2bd646755e44eec6e9a1bb2f 100644
--- a/contrib/mobile/iOS/Onelab/en.lproj/iPadStoryboard.storyboard
+++ b/contrib/mobile/iOS/Onelab/en.lproj/iPadStoryboard.storyboard
@@ -107,7 +107,7 @@
                 </tableViewController>
                 <placeholder placeholderIdentifier="IBFirstResponder" id="3Aw-Tm-Dq6" userLabel="First Responder" sceneMemberID="firstResponder"/>
             </objects>
-            <point key="canvasLocation" x="1280" y="-800"/>
+            <point key="canvasLocation" x="1277" y="-806"/>
         </scene>
         <!--Post Processing View Controller-->
         <scene sceneID="inJ-Ob-bP0">
@@ -166,7 +166,7 @@
                 </viewController>
                 <placeholder placeholderIdentifier="IBFirstResponder" id="URb-SK-Z2A" userLabel="First Responder" sceneMemberID="firstResponder"/>
             </objects>
-            <point key="canvasLocation" x="1759" y="-811"/>
+            <point key="canvasLocation" x="1754" y="-806"/>
         </scene>
         <!--Split View Controller-->
         <scene sceneID="18">
@@ -293,6 +293,38 @@
             <point key="canvasLocation" x="336" y="340"/>
         </scene>
     </scenes>
+    <classes>
+        <class className="EAGLView" superclassName="UIView">
+            <source key="sourceIdentifier" type="project" relativePath="./Classes/EAGLView.h"/>
+        </class>
+        <class className="ModelListController" superclassName="UITableViewController">
+            <source key="sourceIdentifier" type="project" relativePath="./Classes/ModelListController.h"/>
+        </class>
+        <class className="ModelViewController" superclassName="UIViewController">
+            <source key="sourceIdentifier" type="project" relativePath="./Classes/ModelViewController.h"/>
+            <relationships>
+                <relationship kind="action" name="pinch:" candidateClass="UIPinchGestureRecognizer"/>
+                <relationship kind="action" name="tap:" candidateClass="UITapGestureRecognizer"/>
+                <relationship kind="outlet" name="detailDescriptionLabel" candidateClass="UILabel"/>
+                <relationship kind="outlet" name="runStopButton" candidateClass="UIButton"/>
+            </relationships>
+        </class>
+        <class className="ParametersViewController" superclassName="UITableViewController">
+            <source key="sourceIdentifier" type="project" relativePath="./Classes/ParametersViewController.h"/>
+        </class>
+        <class className="PostProcessingViewController" superclassName="UIViewController">
+            <source key="sourceIdentifier" type="project" relativePath="./Classes/PostProcessingViewController.h"/>
+            <relationships>
+                <relationship kind="outlet" name="Intervals" candidateClass="UITextField"/>
+                <relationship kind="outlet" name="IntervalsType" candidateClass="UIPickerView"/>
+                <relationship kind="outlet" name="Name" candidateClass="UILabel"/>
+                <relationship kind="outlet" name="RaiseZ" candidateClass="UISlider"/>
+            </relationships>
+        </class>
+        <class className="SplitViewController" superclassName="UISplitViewController">
+            <source key="sourceIdentifier" type="project" relativePath="./Classes/SplitViewController.h"/>
+        </class>
+    </classes>
     <simulatedMetricsContainer key="defaultSimulatedMetrics">
         <simulatedStatusBarMetrics key="statusBar" statusBarStyle="blackTranslucent"/>
         <simulatedOrientationMetrics key="orientation"/>
diff --git a/contrib/mobile/iOS/Onelab/en.lproj/iPhoneiPodStoryboard.storyboard b/contrib/mobile/iOS/Onelab/en.lproj/iPhoneiPodStoryboard.storyboard
index f92c83c6933edf0d814f7024744c3f2e461b45c5..8a6f70b04f37a93984e598180684ee32e466e2c1 100644
--- a/contrib/mobile/iOS/Onelab/en.lproj/iPhoneiPodStoryboard.storyboard
+++ b/contrib/mobile/iOS/Onelab/en.lproj/iPhoneiPodStoryboard.storyboard
@@ -220,6 +220,7 @@
                             <constraint firstItem="z3z-Xo-nQF" firstAttribute="leading" secondItem="Lh8-gQ-vBl" secondAttribute="leading" constant="20" symbolic="YES" type="default" id="435-s8-4Es"/>
                             <constraint firstItem="BC5-E7-rEF" firstAttribute="leading" secondItem="Bfu-t9-dAj" secondAttribute="trailing" constant="8" symbolic="YES" type="default" id="6vr-r4-RiJ"/>
                             <constraint firstItem="xW0-cN-kxL" firstAttribute="centerX" secondItem="z3z-Xo-nQF" secondAttribute="centerX" type="default" id="7xR-YV-WCT"/>
+                            <constraint firstAttribute="trailing" secondItem="z3z-Xo-nQF" secondAttribute="trailing" constant="20" symbolic="YES" type="default" id="DFn-CU-BmX"/>
                             <constraint firstItem="BC5-E7-rEF" firstAttribute="top" secondItem="Bfu-t9-dAj" secondAttribute="top" type="default" id="LeJ-T9-cOP"/>
                             <constraint firstItem="xW0-cN-kxL" firstAttribute="top" secondItem="z3z-Xo-nQF" secondAttribute="bottom" constant="8" symbolic="YES" type="default" id="SBU-ke-wyb"/>
                             <constraint firstItem="BC5-E7-rEF" firstAttribute="leading" secondItem="rgB-dz-6XG" secondAttribute="leading" type="default" id="SEG-ir-r8Z"/>
@@ -228,8 +229,7 @@
                             <constraint firstItem="elK-Av-NO2" firstAttribute="baseline" secondItem="rgB-dz-6XG" secondAttribute="baseline" type="default" id="Ves-uS-Wgp"/>
                             <constraint firstItem="Bfu-t9-dAj" firstAttribute="leading" secondItem="Lh8-gQ-vBl" secondAttribute="leading" constant="20" symbolic="YES" type="default" id="ao2-ou-LYp"/>
                             <constraint firstItem="elK-Av-NO2" firstAttribute="leading" secondItem="Lh8-gQ-vBl" secondAttribute="leading" constant="20" symbolic="YES" type="default" id="dHF-Hd-Edk"/>
-                            <constraint firstItem="z3z-Xo-nQF" firstAttribute="top" secondItem="Lh8-gQ-vBl" secondAttribute="top" constant="20" symbolic="YES" type="default" id="dhL-em-cgJ"/>
-                            <constraint firstItem="rgB-dz-6XG" firstAttribute="trailing" secondItem="z3z-Xo-nQF" secondAttribute="trailing" type="default" id="iWx-Qa-Nds"/>
+                            <constraint firstItem="z3z-Xo-nQF" firstAttribute="top" secondItem="Lh8-gQ-vBl" secondAttribute="top" constant="53" id="e9a-2b-RgF"/>
                             <constraint firstItem="Bfu-t9-dAj" firstAttribute="top" secondItem="elK-Av-NO2" secondAttribute="bottom" constant="8" symbolic="YES" type="default" id="pa9-yz-1vW"/>
                             <constraint firstItem="rgB-dz-6XG" firstAttribute="top" secondItem="xW0-cN-kxL" secondAttribute="bottom" constant="8" symbolic="YES" type="default" id="xgH-ey-y52"/>
                             <constraint firstAttribute="trailing" secondItem="BC5-E7-rEF" secondAttribute="trailing" constant="20" symbolic="YES" type="default" id="zuO-wq-2vN"/>