     headerViewController.headerView.minMaxHeightIncludesSafeArea = false
     headerViewController.headerView.maximumHeight = Constants.headerViewMaxHeight
     headerViewController.headerView.minimumHeight = Constants.headerViewMinHeight
-    tableView = UITableView(frame: self.view.bounds, style: .grouped)
-    tableView.register(
-      MDCDragonsTableViewCell.self,
-      forCellReuseIdentifier: "MDCDragonsTableViewCell")
-    tableView.backgroundColor = Constants.bgColor
-    tableView.delegate = self
-    tableView.dataSource = self
-    tableView.rowHeight = UITableView.automaticDimension
-    tableView.estimatedRowHeight = 44
-    view.addSubview(tableView)
+
     view.backgroundColor = Constants.bgColor
 
-    if #available(iOS 11, *) {
-      tableView.translatesAutoresizingMaskIntoConstraints = false
-
-      let guide = view.safeAreaLayoutGuide
-      NSLayoutConstraint.activate([
-        tableView.leftAnchor.constraint(equalTo: guide.leftAnchor),
-        tableView.rightAnchor.constraint(equalTo: guide.rightAnchor),
-        tableView.topAnchor.constraint(equalTo: view.topAnchor),
-        tableView.bottomAnchor.constraint(equalTo: guide.bottomAnchor),
-      ])
+    if #available(iOS 14.0, *) {
+      #if compiler(>=5.3)
+        configureCollectionView()
+        configureDataSource()
+      #endif
     } else {
-      preiOS11Constraints()
+      tableView = UITableView(frame: self.view.bounds, style: .grouped)
+      tableView.register(
+        MDCDragonsTableViewCell.self,
+        forCellReuseIdentifier: "MDCDragonsTableViewCell")
+      tableView.backgroundColor = Constants.bgColor
+      tableView.delegate = self
+      tableView.dataSource = self
+      tableView.rowHeight = UITableView.automaticDimension
+      tableView.estimatedRowHeight = 44
+      view.addSubview(tableView)
+      if #available(iOS 11, *) {
+        tableView.translatesAutoresizingMaskIntoConstraints = false
+
+        let guide = view.safeAreaLayoutGuide
+        NSLayoutConstraint.activate([
+          tableView.leftAnchor.constraint(equalTo: guide.leftAnchor),
+          tableView.rightAnchor.constraint(equalTo: guide.rightAnchor),
+          tableView.topAnchor.constraint(equalTo: view.topAnchor),
+          tableView.bottomAnchor.constraint(equalTo: guide.bottomAnchor),
+        ])
+
+        tableView.contentInsetAdjustmentBehavior = .always
+      } else {
+        preiOS11Constraints()
+      }
     }
 
     setupHeaderView()
     let tapgesture = UITapGestureRecognizer(target: self, action: #selector(dismissKeyboard))
     tapgesture.delegate = self
     view.addGestureRecognizer(tapgesture)
-
-    if #available(iOS 11.0, *) {
-      tableView.contentInsetAdjustmentBehavior = .always
-    }
   }
 
   func preiOS11Constraints() {

    -> Bool
  {
    if gestureRecognizer is UITapGestureRecognizer {
      let location = touch.location(in: tableView)
      return (tableView.indexPathForRow(at: location) == nil)
    }
    return true
  }

    headerViewController.headerView.addSubview(headerView)
    headerViewController.headerView.forwardTouchEvents(for: headerView)
    headerViewController.headerView.backgroundColor = Constants.headerColor
    if #available(iOS 14.0, *) {
      headerViewController.headerView.trackingScrollView = collectionView
    } else {
      headerViewController.headerView.trackingScrollView = tableView
    }
    view.addSubview(headerViewController.view)
    headerViewController.didMove(toParent: self)
  }
