             }
         }()
         
-        for itemView in itemViews {
-            transformView.addSubview(itemView)
+        for (index, itemView) in itemViews.enumerate() {
+            transformView.insertSubview(itemView, atIndex: 0)
             itemView.frame.size = CGSize(width: 300, height: 500) // TODO: change hardcoded values
+            
+            let panGesture = UIPanGestureRecognizer(target: self, action: #selector(viewWasPanned))
+            itemView.addGestureRecognizer(panGesture)
+            panGesture.enabled = true
+            
+             // TODO: remove this? useful for debugging
+            itemView.tag = index + 1
+            print("tag: \(itemView.tag), view: \(itemView)")
         }
         
         layoutItemViews()

        for itemView in itemViews {
            itemView.removeFromSuperview()
        }
        
        itemViews = {
            guard let dataSource = dataSource else {

    var animator: UIDynamicAnimator?
    
    func viewWasPanned(recognizer: UIPanGestureRecognizer) {
        print("view was panned: \(recognizer.view!.tag), view: \(recognizer.view!)")
        
        switch recognizer.state {
        case .Possible, .Began:
            decelerateDisplayLinkProgressor = nil
