         var cellFactoryExpectation = expectationWithDescription("cell_factory_\(__FUNCTION__)")
 
         // GIVEN: a cell factory
-        let cellFactory = CollectionViewCellFactory(reuseIdentifier: fakeCellReuseId) { (cell: FakeCollectionCell, model: FakeCollectionModel, view: UICollectionView, indexPath: NSIndexPath) -> FakeCollectionCell in
-            XCTAssertEqual(cell.reuseIdentifier!, self.fakeCellReuseId, "Dequeued cell should have expected identifier")
-            XCTAssertEqual(view, self.fakeCollectionView, "CollectionView should equal the collectionView for the data source")
+        let cellFactory = CollectionViewCellFactory(reuseIdentifier: fakeCellReuseId)
+            { (cell: FakeCollectionCell, model: FakeCollectionModel, view: UICollectionView, indexPath: NSIndexPath) -> FakeCollectionCell in
+                XCTAssertEqual(cell.reuseIdentifier!, self.fakeCellReuseId, "Dequeued cell should have expected identifier")
+                XCTAssertEqual(model, allSections[indexPath.section][indexPath.item], "Model object should equal expected value")
+                XCTAssertEqual(view, self.fakeCollectionView, "CollectionView should equal the collectionView for the data source")
 
-            XCTAssertEqual(model, allSections[indexPath.section][indexPath.item], "Model object should equal expected value")
-
-            cellFactoryExpectation.fulfill()
-
-            return cell
+                cellFactoryExpectation.fulfill()
+                return cell
         }
 
         var supplementaryFactoryExpectation = expectationWithDescription("supplementary_factory_\(__FUNCTION__)")

        fakeCollectionView.dequeueCellExpectation = expectationWithDescription(dequeueCellExpectationName + "\(__FUNCTION__)")

        // GIVEN: a cell factory
        let factory = CollectionViewCellFactory(reuseIdentifier: fakeCellReuseId) { (cell: FakeCollectionCell, model: FakeCollectionModel, view: UICollectionView, indexPath: NSIndexPath) -> FakeCollectionCell in
            XCTAssertEqual(cell.reuseIdentifier!, self.fakeCellReuseId, "Dequeued cell should have expected identifier")
            XCTAssertEqual(view, self.fakeCollectionView, "CollectionView should equal the collectionView for the data source")

            XCTAssertEqual(model, expectedModel, "Model object should equal expected value")
            XCTAssertEqual(indexPath, expectedIndexPath, "IndexPath should equal expected value")

            cellFactoryExpectation.fulfill()

            return cell
        }

        // GIVEN: a data source provider

                waitForExpectationsWithTimeout(DefaultTimeout, handler: { (error) -> Void in
                    XCTAssertNil(error, "Expections should not error")
                })

                // reset expectation names for next loop, ignore last item
                if !(sectionIndex == dataSourceProvider.sections.count - 1 && rowIndex == dataSourceProvider[sectionIndex].count - 1) {
                    cellFactoryExpectation = expectationWithDescription("cell_factory_" + expectationName)
