                 var newIndex: Int
                 
                 if locationInCell.x < (dropCell.bounds.width / 2) {
-                    newIndex = layout.indexToMoveSourceIndexLeftOfDestIndex(dragIndex, destIndex: dropIndex)
+                    newIndex = layout.indexToMoveSourceIndexLeftOfDestIndex(dragIndex!, destIndex: dropIndex)
                 } else {
-                    newIndex = layout.indexToMoveSourceIndexRightOfDestIndex(dragIndex, destIndex: dropIndex)
+                    newIndex = layout.indexToMoveSourceIndexRightOfDestIndex(dragIndex!, destIndex: dropIndex)
                 }
                 
-                currentDragState?.itemViewModel.listViewModel!.moveItemAtIndex(dragIndex, toIndex: newIndex)
+                draggingItemViewModel!.listViewModel!.moveItemAtIndex(dragIndex!, toIndex: newIndex)
                 
                 if let newCell = collectionView.cellForItemAtIndexPath(NSIndexPath(forItem: newIndex, inSection: 0)) {
                     dragProxyReturnToRect = convertRect(newCell.frame, fromView: newCell.superview)

    private var openFolderCollectionView: SwiftBoardCollectionView?
    private var dragProxyState: DragProxyState?
    private var dragProxyReturnToRect: CGRect?
    private var currentDragState: DragState?
    private var currentDropState: DropState?
    
    private var dropOperation: (() -> ())?

    let locationInCell: CGPoint
}

struct DropState {
    let index: Int
    let cell: SwiftBoardCell
