diff --git a/SOURCES/9800-rpmostreepayload-Rework-remote-add-handling.patch b/SOURCES/9800-rpmostreepayload-Rework-remote-add-handling.patch
new file mode 100644
index 0000000..260736c
--- /dev/null
+++ b/SOURCES/9800-rpmostreepayload-Rework-remote-add-handling.patch
@@ -0,0 +1,98 @@
+diff -uNrp anaconda-21.48.22.121.orig/pyanaconda/packaging/rpmostreepayload.py anaconda-21.48.22.121/pyanaconda/packaging/rpmostreepayload.py
+--- anaconda-21.48.22.121.orig/pyanaconda/packaging/rpmostreepayload.py	2017-06-21 12:44:34.000000000 +0000
++++ anaconda-21.48.22.121/pyanaconda/packaging/rpmostreepayload.py	2017-08-23 02:28:23.121006339 +0000
+@@ -142,24 +142,25 @@ class RPMOSTreePayload(ArchivePayload):
+             ["admin", "--sysroot=" + iutil.getTargetPhysicalRoot(),
+              "init-fs", iutil.getTargetPhysicalRoot()])
+ 
+-        repo_arg = "--repo=" + iutil.getTargetPhysicalRoot() + '/ostree/repo'
++        self._sysroot_path = Gio.File.new_for_path(iutil.getTargetPhysicalRoot())
++        sysroot = OSTree.Sysroot.new(self._sysroot_path)
++        sysroot.load(cancellable)
++        repo = sysroot.get_repo(None)[1]
++        # We don't support resuming from interrupted installs
++        repo.set_disable_fsync(True)
++
++        self._remoteOptions = {}
+ 
+-        # Store this for use in postInstall too, where we need to
+-        # undo/redo this step.
+-        self._base_remote_args = ["remote", "add"]
++        # Handle variations in pykickstart
+         if ((hasattr(ostreesetup, 'noGpg') and ostreesetup.noGpg) or
+             (hasattr(ostreesetup, 'nogpg') and ostreesetup.nogpg)):
+-            self._base_remote_args.append("--set=gpg-verify=false")
+-        self._base_remote_args.extend([ostreesetup.remote,
+-                                     ostreesetup.url])
+-        self._safeExecWithRedirect("ostree", [repo_arg] + self._base_remote_args)
++            self._remoteOptions['gpg-verify'] = GLib.Variant('b', False)
+ 
+-        self._sysroot_path = sysroot_path = Gio.File.new_for_path(iutil.getTargetPhysicalRoot())
+-        sysroot = OSTree.Sysroot.new(sysroot_path)
+-        sysroot.load(cancellable)
++        repo.remote_change(None, OSTree.RepoRemoteChange.ADD_IF_NOT_EXISTS,
++                           ostreesetup.remote, ostreesetup.url,
++                           GLib.Variant('a{sv}', self._remoteOptions),
++                           cancellable)
+ 
+-        repo = sysroot.get_repo(None)[1]
+-        repo.set_disable_fsync(True)
+         progressQ.send_message(_("Starting pull of %(branchName)s from %(source)s") % \
+                                {"branchName": ostreesetup.ref, "source": ostreesetup.remote})
+ 
+@@ -192,6 +193,14 @@ class RPMOSTreePayload(ArchivePayload):
+         log.info("ostree pull: " + (progress.get_status() or ""))
+         progressQ.send_message(_("Preparing deployment of %s") % (ostreesetup.ref, ))
+ 
++        # Now that we have the data pulled, delete the remote for now.
++        # This will allow a remote configuration defined in the tree
++        # (if any) to override what's in the kickstart.  Otherwise,
++        # we'll re-add it in post.  Ideally, ostree would support a
++        # pull without adding a remote, but that would get quite
++        # complex.
++        repo.remote_delete(self.data.ostreesetup.remote, None)
++
+         self._safeExecWithRedirect("ostree",
+             ["admin", "--sysroot=" + iutil.getTargetPhysicalRoot(),
+              "os-init", ostreesetup.osname])
+@@ -348,20 +357,30 @@ class RPMOSTreePayload(ArchivePayload):
+         from gi.repository import OSTree
+         cancellable = None
+ 
+-        # Reload this data - we couldn't keep it open across
+-        # the remounts happening.
+         sysroot = OSTree.Sysroot.new(self._sysroot_path)
+         sysroot.load(cancellable)
+         repo = sysroot.get_repo(None)[1]
+ 
+-        # This is an ugly hack - we didn't have /etc/ostree/remotes.d,
+-        # so the remote went into /ostree/repo/config.  But we want it
+-        # in /etc, so delete that remote, then re-add it to
+-        # /etc/ostree/remotes.d, executing ostree inside the sysroot
+-        # so that it understands it's a "system repository" and should
+-        # modify /etc.
+-        repo.remote_delete(self.data.ostreesetup.remote, None)
+-        self._safeExecWithRedirect("ostree", self._base_remote_args, root=iutil.getSysroot())
++        # CentOS specific patch (for now) - pull the remote config from usr/etc if it exists.
++        # The OSTree handling here was buggy in that it wasn't looking in the sysroot
++        # for existing remotes.
++        default_remote_path = iutil.getSysroot() + '/usr/etc/ostree/remotes.d/' + self.data.ostreesetup.osname + '.conf'
++        if os.path.isfile(default_remote_path):
++            destpath = iutil.getSysroot() + '/etc/ostree/remotes.d/' + os.path.basename(default_remote_path)
++            self._safeExecWithRedirect('cp', ['-r', '-p', default_remote_path, destpath])
++        else:
++            # Following up on the "remote delete" above, we removed the
++            # remote from /ostree/repo/config.  But we want it in /etc, so
++            # re-add it to /etc/ostree/remotes.d, using the sysroot path.
++            #
++            # However, we ignore the case where the remote already exists,
++            # which occurs when the content itself provides the remote
++            # config file.
++            repo.remote_change(Gio.File.new_for_path(iutil.getSysroot()),
++                               OSTree.RepoRemoteChange.ADD_IF_NOT_EXISTS,
++                               self.data.ostreesetup.remote, self.data.ostreesetup.url,
++                               GLib.Variant('a{sv}', self._remoteOptions),
++                               cancellable)
+ 
+         boot = iutil.getSysroot() + '/boot'
+ 
diff --git a/SOURCES/anaconda-centos-add-centos-install-class.patch b/SOURCES/anaconda-centos-add-centos-install-class.patch
index 89d64b5..208a851 100644
--- a/SOURCES/anaconda-centos-add-centos-install-class.patch
+++ b/SOURCES/anaconda-centos-add-centos-install-class.patch
@@ -1,7 +1,19 @@
-diff -uNr anaconda-19.31.79__orig/pyanaconda/installclasses/centos.py anaconda-19.31.79/pyanaconda/installclasses/centos.py
---- anaconda-19.31.79__orig/pyanaconda/installclasses/centos.py	1970-01-01 01:00:00.000000000 +0100
-+++ anaconda-19.31.79/pyanaconda/installclasses/centos.py	2014-06-16 22:47:16.033891088 +0100
-@@ -0,0 +1,88 @@
+diff -uNr anaconda-21.48.22.56__orig/pyanaconda/installclasses/fedora.py anaconda-21.48.22.56/pyanaconda/installclasses/fedora.py
+--- anaconda-21.48.22.56__orig/pyanaconda/installclasses/fedora.py	2015-10-22 17:34:02.000000000 +0100
++++ anaconda-21.48.22.56/pyanaconda/installclasses/fedora.py	2015-12-07 16:40:33.122000000 +0000
+@@ -25,7 +25,7 @@
+ class FedoraBaseInstallClass(BaseInstallClass):
+     name = "Fedora"
+     sortPriority = 10000
+-    if productName.startswith("Red Hat "):
++    if productName.startswith("Red Hat ") or productName.startswith("CentOS"):
+         hidden = True
+ 
+     _l10n_domain = "anaconda"
+diff -uNr anaconda-21.48.22.56__orig/pyanaconda/installclasses/centos.py anaconda-21.48.22.56/pyanaconda/installclasses/centos.py
+--- anaconda-21.48.22.56__orig/pyanaconda/installclasses/centos.py	1970-01-01 01:00:00.000000000 +0100
++++ anaconda-21.48.22.56/pyanaconda/installclasses/centos.py	2015-12-07 16:52:11.157000000 +0000
+@@ -0,0 +1,97 @@
 +#
 +# rhel.py
 +#
@@ -22,83 +34,80 @@ diff -uNr anaconda-19.31.79__orig/pyanaconda/installclasses/centos.py anaconda-1
 +#
 +
 +from pyanaconda.installclass import BaseInstallClass
-+from pyanaconda.constants import *
-+from pyanaconda.product import *
++from pyanaconda.product import productName
 +from pyanaconda import network
 +from pyanaconda import nm
-+import types
-+
-+class InstallClass(BaseInstallClass):
-+    # name has underscore used for mnemonics, strip if you dont need it
-+    id = "centos"
-+    name = N_("CentOS Linux")
-+    sortPriority = 25000
-+    if productName.startswith("Red Hat ") or productName.startswith("Fedora "):
-+        hidden = 1
++from pyanaconda.kickstart import getAvailableDiskSpace
++from blivet.partspec import PartSpec
++from blivet.platform import platform
++from blivet.devicelibs import swap
++from blivet.size import Size
 +
++class RHELBaseInstallClass(BaseInstallClass):
++    name = "CentOS Linux"
++    sortPriority = 20001
++    if not productName.startswith("CentOS"):
++        hidden = True
 +    defaultFS = "xfs"
 +
 +    bootloaderTimeoutDefault = 5
-+    bootloaderExtraArgs = []
 +
-+    ignoredPackages = ["ntfsprogs", "reiserfs-utils"]
++    ignoredPackages = ["ntfsprogs", "reiserfs-utils", "hfsplus-tools"]
 +
 +    installUpdates = False
 +
 +    _l10n_domain = "comps"
 +
-+    efi_dir = "redhat"
++    efi_dir = "centos"
++
++    help_placeholder = "CentOSPlaceholder.html"
++    help_placeholder_with_links = "CentOSPlaceholderWithLinks.html"
 +
 +    def configure(self, anaconda):
 +        BaseInstallClass.configure(self, anaconda)
-+        BaseInstallClass.setDefaultPartitioning(self, anaconda.storage)
++        self.setDefaultPartitioning(anaconda.storage)
 +
-+    # Set first boot policy regarding ONBOOT value
-+    # (i.e. which network devices should be activated automatically after reboot)
-+    # After switch root we set ONBOOT=no as default for all devices not activated
-+    # in initramfs. Here, at the end of installation, we check and modify it eventually.
 +    def setNetworkOnbootDefault(self, ksdata):
-+        # if there is no device to be autoactivated after reboot
-+        for devName in nm.nm_devices():
-+            if nm.nm_device_type_is_wifi(devName):
-+                continue
-+            try:
-+                onboot = nm.nm_device_setting_value(devName, "connection", "autoconnect")
-+            except nm.SettingsNotFoundError:
-+                continue
-+            if not onboot == False:
-+                return
-+
-+        # set ONBOOT=yes for the device used during installation
-+        # (ie for majority of cases the one having the default route)
-+        devName = network.default_route_device()
-+        if not devName:
++        if any(nd.onboot for nd in ksdata.network.network if nd.device):
 +            return
-+        if nm.nm_device_type_is_wifi(devName):
++        # choose the device used during installation
++        # (ie for majority of cases the one having the default route)
++        dev = network.default_route_device() \
++              or network.default_route_device(family="inet6")
++        if not dev:
 +            return
-+        ifcfg_path = network.find_ifcfg_file_of_device(devName, root_path=ROOT_PATH)
-+        if not ifcfg_path:
++        # ignore wireless (its ifcfgs would need to be handled differently)
++        if nm.nm_device_type_is_wifi(dev):
 +            return
-+        ifcfg = network.IfcfgFile(ifcfg_path)
-+        ifcfg.read()
-+        ifcfg.set(('ONBOOT', 'yes'))
-+        ifcfg.write()
-+        for nd in ksdata.network.network:
-+            if nd.device == devName:
-+                nd.onboot = True
-+                break
++        network.update_onboot_value(dev, "yes", ksdata)
 +
 +    def __init__(self):
 +        BaseInstallClass.__init__(self)
-diff -uNr anaconda-19.31.79__orig/pyanaconda/installclasses/fedora.py anaconda-19.31.79/pyanaconda/installclasses/fedora.py
---- anaconda-19.31.79__orig/pyanaconda/installclasses/fedora.py	2014-04-29 01:45:59.000000000 +0100
-+++ anaconda-19.31.79/pyanaconda/installclasses/fedora.py	2014-06-16 22:57:40.525890315 +0100
-@@ -31,7 +31,7 @@
-     id = "fedora"
-     name = N_("_Fedora")
-     sortPriority = 10000
--    if productName.startswith("Red Hat "):
-+    if productName.startswith("Red Hat ") or productName.startswith("CentOS"):
-         hidden = 1
- 
-     _l10n_domain = "anaconda"
++
++class RHELAtomicInstallClass(RHELBaseInstallClass):
++    name = "CentOS Atomic Host"
++    sortPriority=21001
++    hidden = not productName.startswith(("CentOS Atomic Host", "CentOS Linux Atomic"))
++
++    def setDefaultPartitioning(self, storage):
++        autorequests = [PartSpec(mountpoint="/", fstype=storage.defaultFSType,
++                                size=Size("1GiB"), maxSize=Size("3GiB"), grow=True, lv=True)]
++
++        bootreqs = platform.setDefaultPartitioning()
++        if bootreqs:
++            autorequests.extend(bootreqs)
++
++        disk_space = getAvailableDiskSpace(storage)
++        swp = swap.swapSuggestion(disk_space=disk_space)
++        autorequests.append(PartSpec(fstype="swap", size=swp, grow=False,
++                                    lv=True, encrypted=True))
++
++        for autoreq in autorequests:
++            if autoreq.fstype is None:
++                if autoreq.mountpoint == "/boot":
++                    autoreq.fstype = storage.defaultBootFSType
++                    autoreq.size = Size("300MiB")
++                else:
++                    autoreq.fstype = storage.defaultFSType
++
++        storage.autoPartitionRequests = autorequests
diff --git a/SOURCES/anaconda-centos-armhfp-extloader.patch b/SOURCES/anaconda-centos-armhfp-extloader.patch
new file mode 100644
index 0000000..a31bafc
--- /dev/null
+++ b/SOURCES/anaconda-centos-armhfp-extloader.patch
@@ -0,0 +1,11 @@
+--- a/pyanaconda/bootloader.py
++++ b/pyanaconda/bootloader.py
+@@ -2239,7 +2239,7 @@ class EXTLINUX(BootLoader):
+     stage2_device_types = ["partition"]
+     stage2_bootable = True
+ 
+-    packages = ["syslinux-extlinux"]
++    packages = ["extlinux-bootloader"]
+ 
+     @property
+     def config_file(self):
diff --git a/SOURCES/anaconda-centos-bootfs-default-to-xfs.patch b/SOURCES/anaconda-centos-bootfs-default-to-xfs.patch
index 31432af..b03ef3a 100644
--- a/SOURCES/anaconda-centos-bootfs-default-to-xfs.patch
+++ b/SOURCES/anaconda-centos-bootfs-default-to-xfs.patch
@@ -1,7 +1,7 @@
-diff -uNr anaconda-19.31.79__orig/pyanaconda/bootloader.py anaconda-19.31.79/pyanaconda/bootloader.py
---- anaconda-19.31.79__orig/pyanaconda/bootloader.py	2014-04-29 01:45:59.000000000 +0100
-+++ anaconda-19.31.79/pyanaconda/bootloader.py	2014-06-30 17:19:19.197386280 +0100
-@@ -1404,7 +1404,7 @@
+diff -uNr anaconda-21.48.22.56__orig/pyanaconda/bootloader.py anaconda-21.48.22.56/pyanaconda/bootloader.py
+--- anaconda-21.48.22.56__orig/pyanaconda/bootloader.py	2015-10-29 14:23:19.000000000 +0000
++++ anaconda-21.48.22.56/pyanaconda/bootloader.py	2015-12-07 17:23:41.013000000 +0000
+@@ -1411,7 +1411,7 @@
  
      @property
      def stage2_format_types(self):
@@ -10,7 +10,7 @@ diff -uNr anaconda-19.31.79__orig/pyanaconda/bootloader.py anaconda-19.31.79/pya
              return ["xfs", "ext4", "ext3", "ext2", "btrfs"]
          else:
              return ["ext4", "ext3", "ext2", "btrfs", "xfs"]
-@@ -2063,7 +2063,7 @@
+@@ -2105,7 +2105,7 @@
  
      @property
      def stage2_format_types(self):
diff --git a/SOURCES/anaconda-centos-disable-mirrors.patch b/SOURCES/anaconda-centos-disable-mirrors.patch
index fb5b2eb..43b97f8 100644
--- a/SOURCES/anaconda-centos-disable-mirrors.patch
+++ b/SOURCES/anaconda-centos-disable-mirrors.patch
@@ -1,15 +1,33 @@
-diff -uNr anaconda-19.31.79__orig/pyanaconda/packaging/yumpayload.py anaconda-19.31.79/pyanaconda/packaging/yumpayload.py
---- anaconda-19.31.79__orig/pyanaconda/packaging/yumpayload.py	2014-04-29 01:45:59.000000000 +0100
-+++ anaconda-19.31.79/pyanaconda/packaging/yumpayload.py	2014-07-02 14:36:15.360488588 +0100
-@@ -428,7 +428,10 @@
+diff -uNrp anaconda-21.48.22.121.orig/pyanaconda/packaging/yumpayload.py anaconda-21.48.22.121/pyanaconda/packaging/yumpayload.py
+--- anaconda-21.48.22.121.orig/pyananconda/packaging/yumpayload.py      2017-08-31 16:28:06.672265889 +0000
++++ anaconda-21.48.22.121/pyanaconda/packaging/yumpayload.py    2017-08-31 16:28:38.812826778 +0000
+@@ -42,6 +42,7 @@ import time
+ import hashlib
+ from pyanaconda.packaging import SSLOptions
+ from pyanaconda.iutil import execReadlines, ipmi_abort
++from pyanaconda.product import productName
+ from pyanaconda.simpleconfig import simple_replace
+ from functools import wraps
+ from urlgrabber.grabber import URLGrabber, URLGrabError
+@@ -540,12 +541,16 @@ reposdir=%s
      @property
      def mirrorEnabled(self):
          with _yum_lock:
--            return "fastestmirror" in self._yum.plugins._plugins
+-            # yum initializes with plugins disabled, and when plugins are disabled
+-            # _yum.plugins is a DummyYumPlugins object, which has no useful attributes.
+-            if hasattr(self._yum.plugins, "_plugins"):
+-                return "fastestmirror" in self._yum.plugins._plugins
++            # we just skip this on CentOS since we cant support it yet
 +            if productName.startswith("CentOS"):
-+                return 0
-+            else:
-+                return "fastestmirror" in self._yum.plugins._plugins
++              return False
+             else:
+-                return False
++              # yum initializes with plugins disabled, and when plugins are disabled
++              # _yum.plugins is a DummyYumPlugins object, which has no useful attributes.
++              if hasattr(self._yum.plugins, "_plugins"):
++                  return "fastestmirror" in self._yum.plugins._plugins
++              else:
++                  return False
  
      def getRepo(self, repo_id):
-         """ Return the yum repo object. """
+         """Return the yum repo object."""
diff --git a/SOURCES/anaconda-centos-help-text.patch b/SOURCES/anaconda-centos-help-text.patch
new file mode 100644
index 0000000..329bfe9
--- /dev/null
+++ b/SOURCES/anaconda-centos-help-text.patch
@@ -0,0 +1,18 @@
+diff -uNr anaconda-21.48.22.56__orig/data/help/en-US/CentOSPlaceholder.html anaconda-21.48.22.56/data/help/en-US/CentOSPlaceholder.html
+--- anaconda-21.48.22.56__orig/data/help/en-US/CentOSPlaceholder.html	1970-01-01 01:00:00.000000000 +0100
++++ anaconda-21.48.22.56/data/help/en-US/CentOSPlaceholder.html	2015-12-07 17:07:05.017000000 +0000
+@@ -0,0 +1,5 @@
++<body>
++<h1>The Anaconda built-in help</h1>
++<p>...is not yet available for this screen.</p>
++<p>You can check out the CentOS Linux resouces online at https://wiki.centos.org/InstallerHelp.</p>
++</body>
+diff -uNr anaconda-21.48.22.56__orig/data/help/en-US/CentOSPlaceholderWithLinks.html anaconda-21.48.22.56/data/help/en-US/CentOSPlaceholderWithLinks.html
+--- anaconda-21.48.22.56__orig/data/help/en-US/CentOSPlaceholderWithLinks.html	1970-01-01 01:00:00.000000000 +0100
++++ anaconda-21.48.22.56/data/help/en-US/CentOSPlaceholderWithLinks.html	2015-12-07 17:09:47.845000000 +0000
+@@ -0,0 +1,5 @@
++<body>
++<h1>The Anaconda built-in help</h1>
++<p>...is not yet available for this screen.</p>
++<p>You can check out the CentOS Linux resouces online at https://wiki.centos.org/InstallerHelp.</p>
++</body>
diff --git a/SOURCES/anaconda-centos-really-add-centos-install-class.patch b/SOURCES/anaconda-centos-really-add-centos-install-class.patch
new file mode 100644
index 0000000..63ab28b
--- /dev/null
+++ b/SOURCES/anaconda-centos-really-add-centos-install-class.patch
@@ -0,0 +1,43 @@
+diff -aurp a/pyanaconda/installclasses/centos.py b/pyanaconda/installclasses/centos.py
+--- a/pyanaconda/installclasses/centos.py	2019-05-31 19:04:29.202239897 -0300
++++ b/pyanaconda/installclasses/centos.py	2019-05-31 19:01:14.000000000 -0300
+@@ -36,9 +36,9 @@ __all__ = ["RHELBaseInstallClass", "RHEL
+ 
+ 
+ class RHELBaseInstallClass(BaseInstallClass):
+-    name = "Red Hat Enterprise Linux"
+-    sortPriority = 20000
+-    if not productName.startswith("Red Hat "):
++    name = "CentOS Linux"
++    sortPriority = 20001
++    if not productName.startswith("CentOS"):
+         hidden = True
+     defaultFS = "xfs"
+ 
+@@ -50,10 +50,10 @@ class RHELBaseInstallClass(BaseInstallCl
+ 
+     _l10n_domain = "comps"
+ 
+-    efi_dir = "redhat"
++    efi_dir = "centos"
+ 
+-    help_placeholder = "RHEL7Placeholder.html"
+-    help_placeholder_with_links = "RHEL7PlaceholderWithLinks.html"
++    help_placeholder = "CentOSPlaceholder.html"
++    help_placeholder_with_links = "CentOSPlaceholderWithLinks.html"
+ 
+     def configure(self, anaconda):
+         BaseInstallClass.configure(self, anaconda)
+@@ -76,9 +76,9 @@ class RHELBaseInstallClass(BaseInstallCl
+         BaseInstallClass.__init__(self)
+ 
+ class RHELAtomicInstallClass(RHELBaseInstallClass):
+-    name = "Red Hat Enterprise Linux Atomic Host"
+-    sortPriority=21000
+-    hidden = not productName.startswith(("RHEL Atomic Host", "Red Hat Enterprise Linux Atomic"))
++    name = "CentOS Atomic Host"
++    sortPriority=21001
++    hidden = not productName.startswith(("CentOS Atomic Host", "CentOS Linux Atomic"))
+ 
+     def __init__(self):
+         self.localemap = {} # loaded lazily
diff --git a/SOURCES/anaconda-centos-skip-retry-if-not-connected.patch b/SOURCES/anaconda-centos-skip-retry-if-not-connected.patch
new file mode 100644
index 0000000..2e51bc2
--- /dev/null
+++ b/SOURCES/anaconda-centos-skip-retry-if-not-connected.patch
@@ -0,0 +1,14 @@
+diff -uNr anaconda-21.48.22.56__orig/pyanaconda/packaging/yumpayload.py anaconda-21.48.22.56/pyanaconda/packaging/yumpayload.py
+--- anaconda-21.48.22.56__orig/pyanaconda/packaging/yumpayload.py       2015-12-08 14:36:52.533000000 +0000
++++ anaconda-21.48.22.56/pyanaconda/packaging/yumpayload.py     2015-12-08 14:38:51.464000000 +0000
+@@ -648,6 +648,10 @@
+                     # so that unattended installations on unreliable networks have
+                     # a higher chance of finishing successfully
+                     xdelay = xprogressive_delay()
++                    if not nm_is_connected():
++                      MAX_METADATA_DOWNLOAD_RETRIES = 1
++                    else:
++                      MAX_METADATA_DOWNLOAD_RETRIES = 10
+                     for retry_count in xrange(0, MAX_METADATA_DOWNLOAD_RETRIES + 1):
+                         if retry_count > 0:
+                             # introduce a retry delay
diff --git a/SOURCES/yumpayload-dont-verify-disabled-repos.patch b/SOURCES/yumpayload-dont-verify-disabled-repos.patch
new file mode 100644
index 0000000..d985391
--- /dev/null
+++ b/SOURCES/yumpayload-dont-verify-disabled-repos.patch
@@ -0,0 +1,14 @@
+diff -uNrp anaconda-21.48.22.121.orig/pyanaconda/packaging/yumpayload.py anaconda-21.48.22.121/pyanaconda/packaging/yumpayload.py
+--- anaconda-21.48.22.121.orig/pyanaconda/packaging/yumpayload.py	2017-04-27 08:09:33.000000000 -0500
++++ anaconda-21.48.22.121/pyanaconda/packaging/yumpayload.py	2017-09-04 00:21:23.617491857 -0500
+@@ -206,6 +206,10 @@ class YumPayload(PackagePayload):
+         """Save repomd.xml files for later test for availability."""
+         self._repoMD_list = []
+         for repoID in self.repos:
++            if not self.isRepoEnabled(repoID):
++                log.info("Not checking metadata for disabled repo %s", repoID)
++                continue
++
+             repo = self.getRepo(repoID)
+             with _yum_lock:
+                 repoMD = RepoMDMetaHash(self, repo)
diff --git a/SPECS/anaconda.spec b/SPECS/anaconda.spec
index 4f5d90e..ae9e759 100644
--- a/SPECS/anaconda.spec
+++ b/SPECS/anaconda.spec
@@ -16,9 +16,14 @@ URL:     http://fedoraproject.org/wiki/Anaconda
 Source0: %{name}-%{version}.tar.bz2
 Patch1:	anaconda-centos-add-centos-install-class.patch
 Patch2:	anaconda-centos-set-right-eula-location.patch
-Patch3:	anaconda-centos-efidir-centos.patch
 Patch4:	anaconda-centos-disable-mirrors.patch
 Patch5:	anaconda-centos-bootfs-default-to-xfs.patch
+Patch6: anaconda-centos-help-text.patch
+Patch7: anaconda-centos-skip-retry-if-not-connected.patch
+Patch8: 9800-rpmostreepayload-Rework-remote-add-handling.patch
+Patch9: yumpayload-dont-verify-disabled-repos.patch
+Patch10: anaconda-centos-armhfp-extloader.patch
+Patch11: anaconda-centos-really-add-centos-install-class.patch
 
 # Versions of required components (done so we make sure the buildrequires
 # match the requires versions of things).
@@ -185,7 +190,7 @@ Requires: keybinder3
 Requires: NetworkManager-wifi
 %endif
 Requires: yelp
-Requires: anaconda-user-help >= %{helpver}
+#Requires: anaconda-user-help >= %{helpver}
 
 # Needed to compile the gsettings files
 BuildRequires: gsettings-desktop-schemas
@@ -236,9 +241,21 @@ runtime on NFS/HTTP/FTP servers or local disks.
 %setup -q
 %patch1 -p1
 %patch2 -p1
-%patch3 -p1
 %patch4 -p1
 %patch5 -p1
+%patch6 -p1
+%patch7 -p1
+%patch8 -p1
+%patch9 -p1
+%ifarch %{arm}
+%patch10 -p1
+%endif
+
+pushd pyanaconda/installclasses/
+cp -f rhel.py centos.py
+popd
+
+%patch11 -p1
 
 %build
 %configure --disable-static \