       let cv = UICollectionView(frame: .zero, collectionViewLayout: UICollectionViewFlowLayout())
       cv.translatesAutoresizingMaskIntoConstraints = false
       self.view.addSubview(cv)
+      let headerContainerView = self._headerContainerView
       let footerContainerView = self._footerContainerView
+      self.view.addSubview(headerContainerView)
       self.view.addSubview(footerContainerView)
       
-      
+      self._headerViewBottomSpaceConstraint = headerContainerView.bottomAnchor.constraint(equalTo: cv.topAnchor)
+      self._headerViewTopSpaceConstraint = headerContainerView.topAnchor.constraint(equalTo: self.view.topAnchor)
       self._footerViewBottomSpaceConstraint = footerContainerView.bottomAnchor.constraint(equalTo: self.view.bottomAnchor)
       self._footerViewTopSpaceConstraint = footerContainerView.topAnchor.constraint(equalTo: cv.bottomAnchor)
       self._cvLeadingSpaceConstraint = cv.leadingAnchor.constraint(equalTo: self.view.leadingAnchor)
-      self._update(footerView: self._emptyFooterView)
+      self._update(containerView: self._headerContainerView, with: self._emptyHeaderView)
+      self._update(containerView: self._footerContainerView, with: self._emptyFooterView)
       
       NSLayoutConstraint.activate([
-         cv.topAnchor.constraint(equalTo: self.view.topAnchor),
          cv.widthAnchor.constraint(equalTo: self.view.widthAnchor),
+         self._headerViewBottomSpaceConstraint,
+         self._headerViewTopSpaceConstraint,
          self._footerViewBottomSpaceConstraint,
          self._footerViewTopSpaceConstraint,
          self._cvLeadingSpaceConstraint,

      control.layer.zPosition = -1
      return control
   }()
   
   fileprivate var _footerViewTopSpaceConstraint: NSLayoutConstraint!
   fileprivate var _footerViewBottomSpaceConstraint: NSLayoutConstraint!
   

   public var footerView: UIView? {
      didSet {
         switch footerView {
         case .none: _update(containerView: _footerContainerView, with: _emptyFooterView)
         case .some(let view): _update(containerView: _footerContainerView, with: view)
         }
      }
   }
