 }
 
 public class PullToActionController: NSObject {
-    weak var scrollView: UIScrollView?
+    weak var scrollView: UIScrollView? // ???: Should I make this strong?
     weak var delegate: PullToActionDelagete?
 
-    var offset: CGPoint = CGPoint(x: 0.0, y: 0.0)
-    var size: CGSize = CGSize(width: 0.0, height: 0.0)
-    var inset: UIEdgeInsets = UIEdgeInsets.zero
-    fileprivate var progressAction: [String: OffsetRange] = Dictionary<String, OffsetRange>()
+    var offset: CGPoint = .zero
+    var size: CGSize = .zero
+    var inset: UIEdgeInsets = .zero
+    fileprivate var progressActions = Dictionary<String, OffsetRange>()
 
     // MARK: -
     init(scrollView: UIScrollView) {
         self.scrollView = scrollView
+
         super.init()
 
         scrollView.delegate = self // TODO: forward message to original delegate of the scroll view.

                return
            }

            self.offset = newOffsetValue.cgPointValue

            guard let delegateFunction = self.delegate?.scrollViewContentOffsetProgress else { return }
            var progress = [String: Double]()
            for (name, actionOffset) in self.progressAction {
                let progressValue = actionOffset.progress(for: self.currentOffset(relativeTo: actionOffset.baseLine))
                progress.updateValue(progressValue, forKey: name)
            }
            delegateFunction(progress)

extension PullToActionController: UIScrollViewDelegate {
    open func scrollViewDidEndDragging(_ scrollView: UIScrollView, willDecelerate decelerate: Bool) {
        //TODO: consider content inset
        let topOffset = offset.y
        if topOffset < 0.0 {
            DDLogDebug("[PullToAction] End dragging <- \(topOffset)")
            delegate?.scrollViewDidEndDraggingOutsideTopBound?(with: topOffset)
            return
        }

        let bottomOffset = offset.y + scrollView.bounds.height - size.height
        if bottomOffset > 0.0 {
            DDLogDebug("[PullToAction] End dragging -> \(bottomOffset)")
            delegate?.scrollViewDidEndDraggingOutsideBottomBound?(with: bottomOffset)
            return
        }
    }
