    fileprivate var _elements: [Elemental] = []
    
    // MARK: - Public Properties
+   public var footerViewTopPadding: CGFloat = 0 {
+      didSet {
+         _footerViewTopSpaceConstraint.constant = footerViewTopPadding
+      }
+   }
+   
+   public var footerViewBottomPadding: CGFloat = 0 {
+      didSet {
+         _footerViewBottomSpaceConstraint.constant = -footerViewBottomPadding
+      }
+   }
+   
    public var footerView: UIView? {
       didSet {
          switch footerView {

      let footerContainerView = self._footerContainerView
      self.view.addSubview(footerContainerView)
      
      footerContainerView.bottomAnchor.constraint(equalTo: self.view.bottomAnchor).isActive = true
      footerContainerView.widthAnchor.constraint(equalTo: self.view.widthAnchor).isActive = true
      self._update(footerView: self._emptyFooterView)
      
      cv.topAnchor.constraint(equalTo: self.view.topAnchor).isActive = true
      cv.bottomAnchor.constraint(equalTo: footerContainerView.topAnchor).isActive = true
      cv.widthAnchor.constraint(equalTo: self.view.widthAnchor).isActive = true
      
      self._cvLeadingSpaceConstraint = cv.leadingAnchor.constraint(equalTo: self.view.leadingAnchor)
      self._cvLeadingSpaceConstraint.isActive = true
      
      cv.dataSource = self
      cv.delegate = self

      return control
   }()
   
   fileprivate var _footerViewTopSpaceConstraint: NSLayoutConstraint!
   fileprivate var _footerViewBottomSpaceConstraint: NSLayoutConstraint!
   
   fileprivate lazy var _footerContainerView: UIView = {
      let footerView = UIView(frame: .zero)
      footerView.translatesAutoresizingMaskIntoConstraints = false
