 		}
 	}
 
-	func testOCDeletionPerformance_10000_iterations() {
+	func testDeletion_10000_OC_iterations() {
 		measureOCDeletionPerformance(times: 10000)
 	}
 
-	func testOCDeletionPerformance_2000_iterations() {
+	func testDeletion_2000_OC_iterations() {
 		measureOCDeletionPerformance(times: 2000)
 	}
 
-	func testOCDeletionPerformance_1000_iterations() {
+	func testDeletion_1000_OC_iterations() {
 		measureOCDeletionPerformance(times: 1000)
 	}
 
-	func testOCDeletionPerformance_100_iterations() {
+	func testDeletion_100_OC_iterations() {
 		measureOCDeletionPerformance(times: 100)
 	}
 
-	func testOCDeletionPerformance_10_iterations() {
+	func testDeletion_10_OC_iterations() {
 		measureOCDeletionPerformance(times: 10)
 	}
 
-	func measureOCSectionInsertionPerformance(times: Int) {
-		let collection = Children.query(mainContext)
-			.sort(by: .ascending("value"))
-			.group(by: .ascending("group"))
+	func measureOCReadPerformance(times: Int) {
+		for i in 0 ..< times {
+			let children = Children(context: mainContext)
+			children.value = Int64(i)
+		}
+
+		mainContext.processPendingChanges()
+
+		let collection = Children.query(self.mainContext)
+			.sort(by: .ascending("value"))
 			.makeCollection(prefetching: .none)
-
-		measure {
-			self.mainContext.reset()
-			expect { try collection.fetch() }.toNot(throwError())
-
-			for i in 0 ..< times {
-				let children = Children(context: self.mainContext)
-				children.group = String(format: "%010d", i)
-				children.value = Int64(i)
-			}
-
-			self.mainContext.processPendingChanges()
-
+		expect { try collection.fetch() }.toNot(throwError())
+
+		measure {
 			// verify results
-			expect(collection.sectionCount) == times
+			expect(collection.sectionCount) == 1
+			expect(collection.rowCount(for: 0)) == times
 
 			for indexPath in collection.indices {
-				expect(collection[indexPath].value) == Int64(indexPath.section)
+				expect(collection[indexPath].value) == Int64(indexPath.row)
 			}
 		}
 
 		self.mainContext.reset()
 	}
 
-	func testOCSectionInsertionPerformance_10000_iterations() {
-		measureOCSectionInsertionPerformance(times: 10000)
+	func testRead_10000_OC_iterations() {
+		measureOCReadPerformance(times: 10000)
+	}
+
+	func testRead_2000_OC_iterations() {
+		measureOCReadPerformance(times: 2000)
+	}
+
+	func testRead_1000_OC_iterations() {
+		measureOCReadPerformance(times: 1000)
+	}
+
+	func testRead_100_OC_iterations() {
+		measureOCReadPerformance(times: 100)
+	}
+
+	func testRead_10_OC_iterations() {
+		measureOCReadPerformance(times: 10)
 	}
 
 	func measureOCInsertionPerformance(times: Int) {

			// verify results
			expect(collection.sectionCount) == 1
			expect(collection.rowCount(for: 0)) == times

			for indexPath in collection.indices {
				expect(collection[indexPath].value) == Int64(indexPath.row)
			}
		}

		self.mainContext.reset()
	}

	func testOCInsertionPerformance_10000_iterations() {
		measureOCInsertionPerformance(times: 10000)
	}

	func testOCInsertionPerformance_2000_iterations() {
		measureOCInsertionPerformance(times: 2000)
	}

	func testOCInsertionPerformance_1000_iterations() {
		measureOCInsertionPerformance(times: 1000)
	}

	func testOCInsertionPerformance_100_iterations() {
		measureOCInsertionPerformance(times: 100)
	}

	func testOCInsertionPerformance_10_iterations() {
		measureOCInsertionPerformance(times: 10)
	}


		}

		mainContext = NSManagedObjectContext(parent: .persistentStore(storeCoordinator),
		                                     concurrencyType: .mainQueueConcurrencyType)
	}

	override func tearDown() {
