     
     backgroundColor = .white
     
-    addSubview(collectionView)
-    collectionView.frame = bounds
-    collectionView.autoresizingMask = [.flexibleHeight, .flexibleWidth]
-    
-    collectionView.alwaysBounceVertical = true
-    collectionView.delaysContentTouches = false
-    collectionView.keyboardDismissMode = .interactive
-    collectionView.backgroundColor = .clear
-    
-    collectionView.delegate = self
-    collectionView.dataSource = self
+    alwaysBounceVertical = true
+    delaysContentTouches = false
+    keyboardDismissMode = .interactive
+    backgroundColor = .clear
+    
+    super.delegate = self
+    super.dataSource = self
+  }
+  
+  open override func touchesShouldCancel(in view: UIView) -> Bool {
+    return true
   }
 
   open func append(view: UIView) {
     
     views.append(view)
-    
-    collectionView.register(Cell.self, forCellWithReuseIdentifier: identifier(view))
-    
-    collectionView.reloadData()
+    register(Cell.self, forCellWithReuseIdentifier: identifier(view))
+    reloadData()
   }  
   
   open func append(views _views: [UIView]) {
     
     views += _views
     _views.forEach { view in
-      collectionView.register(Cell.self, forCellWithReuseIdentifier: identifier(view))
-    }
-    collectionView.reloadData()
+      register(Cell.self, forCellWithReuseIdentifier: identifier(view))
+    }
+    reloadData()
   }
   
   // TODO:

          .overrideInheritedDuration
        ],
        animations: {
          self.collectionView.performBatchUpdates(nil, completion: nil)
          self.layoutIfNeeded()
      }) { (finish) in
        
      }
    } else {
      UIView.performWithoutAnimation {
        self.collectionView.performBatchUpdates(nil, completion: nil)
        self.layoutIfNeeded()
      }
    }

    return layout
  }
  
  @available(*, unavailable)
  open override var dataSource: UICollectionViewDataSource? {
    didSet {
    }
  }
  
  @available(*, unavailable)
  open override var delegate: UICollectionViewDelegate? {
    didSet {
    }
  }
  
  // MARK: - Initializers
  
  public override init(frame: CGRect, collectionViewLayout layout: UICollectionViewLayout) {
    super.init(frame: frame, collectionViewLayout: layout)
    setup()
  }
  
  public convenience init(frame: CGRect) {
    self.init(frame: frame, collectionViewLayout: StackScrollView.defaultLayout())
    setup()
  }
  
  public required init?(coder aDecoder: NSCoder) {
    super.init(coder: aDecoder)
    setup()
  }
