diff --git a/openbis-ipad/openBIS/openBIS.xcodeproj/project.xcworkspace/xcuserdata/cramakri.xcuserdatad/UserInterfaceState.xcuserstate b/openbis-ipad/openBIS/openBIS.xcodeproj/project.xcworkspace/xcuserdata/cramakri.xcuserdatad/UserInterfaceState.xcuserstate
index 4aafb5de0c758b66ed527e9d5bc8d8db96dc5dc4..03927c4f6ff207b0f6316ab6ac2e2c3138641c2a 100644
Binary files a/openbis-ipad/openBIS/openBIS.xcodeproj/project.xcworkspace/xcuserdata/cramakri.xcuserdatad/UserInterfaceState.xcuserstate and b/openbis-ipad/openBIS/openBIS.xcodeproj/project.xcworkspace/xcuserdata/cramakri.xcuserdatad/UserInterfaceState.xcuserstate differ
diff --git a/openbis-ipad/openBIS/openBIS/CISDOBAppDelegate.m b/openbis-ipad/openBIS/openBIS/CISDOBAppDelegate.m
index e9d068f017062c7aa61889acd3f40a2ab87f1509..6bbbfa69db87c53f6f107e7ad2d7d749d63576a7 100644
--- a/openbis-ipad/openBIS/openBIS/CISDOBAppDelegate.m
+++ b/openbis-ipad/openBIS/openBIS/CISDOBAppDelegate.m
@@ -55,7 +55,7 @@
 {
     // Initialize the controller
     CISDOBMasterViewController *controller = [self masterViewController];
-    controller.managedObjectContext = self.managedObjectContext;
+    controller.openBisModel = self.openBisModel;
     return YES;
 }
 							
diff --git a/openbis-ipad/openBIS/openBIS/CISDOBMasterViewController.h b/openbis-ipad/openBIS/openBIS/CISDOBMasterViewController.h
index 4fe19d74dbcc174401892b6f7f9cfdcc5da93cf6..d970df5ca84637d9281fb610f0d076204affddb2 100644
--- a/openbis-ipad/openBIS/openBIS/CISDOBMasterViewController.h
+++ b/openbis-ipad/openBIS/openBIS/CISDOBMasterViewController.h
@@ -23,15 +23,15 @@
 
 #import <UIKit/UIKit.h>
 
-@class CISDOBDetailViewController;
+@class CISDOBDetailViewController, CISDOBOpenBisModel;
 
 #import <CoreData/CoreData.h>
 
 @interface CISDOBMasterViewController : UITableViewController <NSFetchedResultsControllerDelegate>
 
 @property (strong, nonatomic) CISDOBDetailViewController *detailViewController;
+@property (strong, nonatomic) CISDOBOpenBisModel *openBisModel;
 
 @property (strong, nonatomic) NSFetchedResultsController *fetchedResultsController;
-@property (strong, nonatomic) NSManagedObjectContext *managedObjectContext;
 
 @end
diff --git a/openbis-ipad/openBIS/openBIS/CISDOBMasterViewController.m b/openbis-ipad/openBIS/openBIS/CISDOBMasterViewController.m
index 6f070b5d8f6fc1e34920dbcacbfeecb5e451dde4..cf5a12d9e7fc8f3fb0fb60ecec73b52c900eadce 100644
--- a/openbis-ipad/openBIS/openBIS/CISDOBMasterViewController.m
+++ b/openbis-ipad/openBIS/openBIS/CISDOBMasterViewController.m
@@ -25,6 +25,7 @@
 
 #import "CISDOBDetailViewController.h"
 #import "CISDOBIpadEntity.h"
+#import "CISDOBOpenBisModel.h"
 
 @interface CISDOBMasterViewController ()
 - (void)configureCell:(UITableViewCell *)cell atIndexPath:(NSIndexPath *)indexPath;
@@ -148,7 +149,7 @@
     if ([object.childrenPermIds count] > 0) {
         UIStoryboard *storyboard = self.storyboard;
         CISDOBMasterViewController *controller = [storyboard instantiateViewControllerWithIdentifier:@"Drill"];
-        controller.managedObjectContext = self.managedObjectContext;
+        controller.openBisModel = self.openBisModel;
         controller.title = object.summaryHeader;
         // TODO Initialize the fetch results controller
 
@@ -168,36 +169,23 @@
     }
 }
 
+- (void)configureCell:(UITableViewCell *)cell atIndexPath:(NSIndexPath *)indexPath
+{
+    CISDOBIpadEntity *object = [self.fetchedResultsController objectAtIndexPath:indexPath];
+    cell.textLabel.text = [object valueForKey:@"summaryHeader"];
+    cell.detailTextLabel.text = [object valueForKey:@"summary"];
+    if ([object.childrenPermIds count] > 0) {
+        cell.accessoryType = UITableViewCellAccessoryDisclosureIndicator;
+    } else {
+        cell.accessoryType = UITableViewCellAccessoryNone;
+    }
+}
+
 #pragma mark - Fetched results controller
 
 - (NSFetchedResultsController *)fetchedResultsController
 {
-    if (_fetchedResultsController != nil) {
-        return _fetchedResultsController;
-    }
-    
-    NSFetchRequest *fetchRequest = [[NSFetchRequest alloc] init];
-    NSEntityDescription *entity = [NSEntityDescription entityForName: @"CISDOBIpadEntity" inManagedObjectContext: self.managedObjectContext];
-    [fetchRequest setEntity:entity];
-    [fetchRequest setFetchBatchSize:20];
-    
-    NSSortDescriptor *groupSortDescriptor = [[NSSortDescriptor alloc] initWithKey:@"group" ascending: NO];
-    NSSortDescriptor *summaryHeaderSortDescriptor = [[NSSortDescriptor alloc] initWithKey:@"summaryHeader" ascending: YES];
-    NSArray *sortDescriptors = @[groupSortDescriptor, summaryHeaderSortDescriptor];
-    [fetchRequest setSortDescriptors:sortDescriptors];
-    
-    NSFetchedResultsController *aFetchedResultsController = [[NSFetchedResultsController alloc] initWithFetchRequest: fetchRequest managedObjectContext: self.managedObjectContext sectionNameKeyPath: @"group" cacheName: @"Master"];
-    aFetchedResultsController.delegate = self;
-    self.fetchedResultsController = aFetchedResultsController;
-    
-	NSError *error = nil;
-	if (![self.fetchedResultsController performFetch:&error]) {
-        // TODO Implement error handling
-	    NSLog(@"Unresolved error %@, %@", error, [error userInfo]);
-	    abort();
-	}
-    
-    return _fetchedResultsController;
+    return self.openBisModel.fetchedResultsController;
 }    
 
 - (void)controllerWillChangeContent:(NSFetchedResultsController *)controller
@@ -260,16 +248,13 @@
 }
  */
 
-- (void)configureCell:(UITableViewCell *)cell atIndexPath:(NSIndexPath *)indexPath
+
+#pragma mark - Properties
+
+- (void)setOpenBisModel:(CISDOBOpenBisModel *)openBisModel
 {
-    CISDOBIpadEntity *object = [self.fetchedResultsController objectAtIndexPath:indexPath];
-    cell.textLabel.text = [object valueForKey:@"summaryHeader"];
-    cell.detailTextLabel.text = [object valueForKey:@"summary"];
-    if ([object.childrenPermIds count] > 0) {
-        cell.accessoryType = UITableViewCellAccessoryDisclosureIndicator;
-    } else {
-        cell.accessoryType = UITableViewCellAccessoryNone;
-    }
+    _openBisModel = openBisModel;
+    _openBisModel.delegate = self;
 }
 
 @end
diff --git a/openbis-ipad/openBIS/openBIS/CISDOBOpenBisModel.h b/openbis-ipad/openBIS/openBIS/CISDOBOpenBisModel.h
index d501eed5d41656f340a0a7457c664657a51a4b65..e0b5d97c36e42a601f7d012eaeceee91b1d7b87e 100644
--- a/openbis-ipad/openBIS/openBIS/CISDOBOpenBisModel.h
+++ b/openbis-ipad/openBIS/openBIS/CISDOBOpenBisModel.h
@@ -25,12 +25,13 @@
 /**
  * \brief A model for the interaction with openBIS.
  */
-@interface CISDOBOpenBisModel : NSObject {
+@interface CISDOBOpenBisModel : NSObject <NSFetchedResultsControllerDelegate> {
 
 }
 
 @property (strong, nonatomic) NSFetchedResultsController *fetchedResultsController;
 @property (strong, nonatomic) NSManagedObjectContext *managedObjectContext;
+@property (weak, nonatomic) id <NSFetchedResultsControllerDelegate> delegate;
 
 
 @end
diff --git a/openbis-ipad/openBIS/openBIS/CISDOBOpenBisModel.m b/openbis-ipad/openBIS/openBIS/CISDOBOpenBisModel.m
index 12867155a3cc31760b5d01caee2b34e37a1fdafd..571ff1d55d0d0f3b123e92ac9c057e382f619cf6 100644
--- a/openbis-ipad/openBIS/openBIS/CISDOBOpenBisModel.m
+++ b/openbis-ipad/openBIS/openBIS/CISDOBOpenBisModel.m
@@ -24,4 +24,61 @@
 
 @implementation CISDOBOpenBisModel
 
+#pragma mark - Fetched results controller
+
+- (NSFetchedResultsController *)fetchedResultsController
+{
+    if (_fetchedResultsController != nil) {
+        return _fetchedResultsController;
+    }
+    
+    NSFetchRequest *fetchRequest = [[NSFetchRequest alloc] init];
+    NSEntityDescription *entity = [NSEntityDescription entityForName: @"CISDOBIpadEntity" inManagedObjectContext: self.managedObjectContext];
+    [fetchRequest setEntity:entity];
+    [fetchRequest setFetchBatchSize:20];
+    
+    NSSortDescriptor *groupSortDescriptor = [[NSSortDescriptor alloc] initWithKey:@"group" ascending: NO];
+    NSSortDescriptor *summaryHeaderSortDescriptor = [[NSSortDescriptor alloc] initWithKey:@"summaryHeader" ascending: YES];
+    NSArray *sortDescriptors = @[groupSortDescriptor, summaryHeaderSortDescriptor];
+    [fetchRequest setSortDescriptors:sortDescriptors];
+    
+    NSFetchedResultsController *aFetchedResultsController = [[NSFetchedResultsController alloc] initWithFetchRequest: fetchRequest managedObjectContext: self.managedObjectContext sectionNameKeyPath: @"group" cacheName: @"Master"];
+    aFetchedResultsController.delegate = self;
+    self.fetchedResultsController = aFetchedResultsController;
+    
+	NSError *error = nil;
+	if (![self.fetchedResultsController performFetch:&error]) {
+        // TODO Implement error handling
+	    NSLog(@"Unresolved error %@, %@", error, [error userInfo]);
+	    abort();
+	}
+    
+    return _fetchedResultsController;
+}    
+
+- (void)controllerWillChangeContent:(NSFetchedResultsController *)controller
+{
+    [self.delegate controllerWillChangeContent: controller];
+}
+
+- (void)controller:(NSFetchedResultsController *)controller didChangeSection:(id <NSFetchedResultsSectionInfo>)sectionInfo
+           atIndex:(NSUInteger)sectionIndex forChangeType:(NSFetchedResultsChangeType)type
+{
+    [self.delegate controller: controller didChangeSection: sectionInfo atIndex: sectionIndex forChangeType: type];
+}
+
+- (void)controller:(NSFetchedResultsController *)controller didChangeObject:(id)anObject
+       atIndexPath:(NSIndexPath *)indexPath forChangeType:(NSFetchedResultsChangeType)type
+      newIndexPath:(NSIndexPath *)newIndexPath
+{
+    [self.delegate controller: controller didChangeObject: anObject
+       atIndexPath: indexPath forChangeType: type
+      newIndexPath: newIndexPath];
+}
+
+- (void)controllerDidChangeContent:(NSFetchedResultsController *)controller
+{
+    [self.delegate controllerDidChangeContent: controller];
+}
+
 @end