         collectionView.dataSource = self
         collectionView.delegate = self
     }
-
+    
+    
+    // MARK: - UIScrollViewDelegate
     
     func scrollViewWillEndDragging(_ scrollView: UIScrollView, withVelocity velocity: CGPoint, targetContentOffset: UnsafeMutablePointer<CGPoint>) {
-        let pageWidth = Float(UIScreen.main.bounds.size.width - 100)
+        let width = Float(scrollView.frame.width)
+        let cellWidth = Float(width - C.Collection.sideEdgeInset * 2)
+        
+        let pageWidth = Float(cellWidth + C.Collection.lineSpacing)
         
         let currentOffset = Float(scrollView.contentOffset.x)
         let targetOffset = Float(targetContentOffset.pointee.x)
-        var newTargetOffset: Float = 0
+        var newTargetOffset: Float = 0.0
         
         if targetOffset > currentOffset {
             newTargetOffset = ceilf(currentOffset / pageWidth) * pageWidth

        let motivation = motivations[indexPath.row]
        cell.configureWith(motivation)
        
        // make a bool and set YES initially, this check will prevent fist load transform
        if (indexPath.row == motivations.count - 2 && isFirstTimeTransform) {
            isFirstTimeTransform = false
            cell.alpha = 1
            cell.transform = C.Animation.Transform.identity
        } else {
            // the new cell will always be transform and without animation
            cell.transform = C.Animation.Transform.scale
            cell.alpha = 0.5
        }
        
        return cell
    }
    

    /// Motivations array
    fileprivate var motivations: [Motivation] = []
    
    
    // MARK: - Public
    
