diff --git a/CRM/Stripe/Check.php b/CRM/Stripe/Check.php
index 34476a9e11a9791f7d3e1b849aa0492aae5871f2..41990ff8e705264e4b26f0ef4959955732b9477e 100644
--- a/CRM/Stripe/Check.php
+++ b/CRM/Stripe/Check.php
@@ -25,77 +25,105 @@ class CRM_Stripe_Check {
   /**
    * @var string
    */
-  const MIN_VERSION_MJWSHARED = '1.0';
-  const MIN_VERSION_SWEETALERT = '1.5';
+  const MIN_VERSION_MJWSHARED = '1.1';
   const MIN_VERSION_FIREWALL = '1.2.1';
 
-  public static function checkRequirements(&$messages) {
-    self::checkExtensionMjwshared($messages);
-    self::checkExtensionFirewall($messages);
-    self::checkExtensionSweetalert($messages);
-    self::checkIfSeparateMembershipPaymentEnabled($messages);
-    self::checkUpgradeMessages($messages);
-  }
+  /**
+   * @var array
+   */
+  private $messages;
 
   /**
-   * @param array $messages
+   * CRM_Stripe_Check constructor.
    *
+   * @param $messages
+   */
+  public function __construct($messages) {
+    $this->messages = $messages;
+  }
+
+  /**
+   * @return array
    * @throws \CiviCRM_API3_Exception
    */
-  private static function checkExtensionMjwshared(&$messages) {
-    // mjwshared: required. Requires min version
-    $extensionName = 'mjwshared';
-    $extensions = civicrm_api3('Extension', 'get', [
-      'full_name' => $extensionName,
-    ]);
+  public function checkRequirements() {
+    $this->checkExtensionMjwshared();
+    $this->checkExtensionFirewall();
+    $this->checkUpgradeMessages();
+    return $this->messages;
+  }
 
-    if (empty($extensions['count']) || ($extensions['values'][$extensions['id']]['status'] !== 'installed')) {
+  /**
+   * @param string $extensionName
+   * @param string $minVersion
+   * @param string $actualVersion
+   */
+  private function requireExtensionMinVersion($extensionName, $minVersion, $actualVersion) {
+    $actualVersionModified = $actualVersion;
+    if (substr($actualVersion, -4) === '-dev') {
       $message = new CRM_Utils_Check_Message(
-        __FUNCTION__ . E::SHORT_NAME . '_requirements',
-        E::ts('The <em>%1</em> extension requires the <em>Payment Shared</em> extension which is not installed. See <a href="%2" target="_blank">details</a> for more information.',
+        __FUNCTION__ . $extensionName . E::SHORT_NAME . '_requirements_dev',
+        E::ts('You are using a development version of %1 extension.',
           [
             1 => ucfirst(E::SHORT_NAME),
-            2 => 'https://civicrm.org/extensions/mjwshared',
-          ]
-        ),
+            2 => $extensionName,
+            3 => $minVersion,
+            4 => $actualVersion
+          ]),
+        E::ts('%1: Development version', [1 => ucfirst(E::SHORT_NAME)]),
+        \Psr\Log\LogLevel::WARNING,
+        'fa-code'
+      );
+      $this->messages[] = $message;
+      $actualVersionModified = substr($actualVersion, 0, -4);
+    }
+
+    if (version_compare($actualVersionModified, $minVersion) === -1) {
+      $message = new CRM_Utils_Check_Message(
+        __FUNCTION__ . $extensionName . E::SHORT_NAME . '_requirements',
+        E::ts('The %1 extension requires the %2 extension version %3 or greater but your system has version %4.',
+          [
+            1 => ucfirst(E::SHORT_NAME),
+            2 => $extensionName,
+            3 => $minVersion,
+            4 => $actualVersion
+          ]),
         E::ts('%1: Missing Requirements', [1 => ucfirst(E::SHORT_NAME)]),
         \Psr\Log\LogLevel::ERROR,
-        'fa-money'
+        'fa-exclamation-triangle'
       );
       $message->addAction(
-        E::ts('Install now'),
+        E::ts('Upgrade now'),
         NULL,
         'href',
         ['path' => 'civicrm/admin/extensions', 'query' => ['action' => 'update', 'id' => $extensionName, 'key' => $extensionName]]
       );
-      $messages[] = $message;
-      return;
-    }
-    if (isset($extensions['id']) && $extensions['values'][$extensions['id']]['status'] === 'installed') {
-      self::requireExtensionMinVersion($messages, $extensionName, self::MIN_VERSION_MJWSHARED, $extensions['values'][$extensions['id']]['version']);
+      $this->messages[] = $message;
     }
   }
 
   /**
-   * @param array $messages
-   *
    * @throws \CiviCRM_API3_Exception
    */
-  private static function checkExtensionFirewall(&$messages) {
-    $extensionName = 'firewall';
-
+  private function checkExtensionMjwshared() {
+    // mjwshared: required. Requires min version
+    $extensionName = 'mjwshared';
     $extensions = civicrm_api3('Extension', 'get', [
       'full_name' => $extensionName,
     ]);
 
     if (empty($extensions['count']) || ($extensions['values'][$extensions['id']]['status'] !== 'installed')) {
       $message = new CRM_Utils_Check_Message(
-        __FUNCTION__ . 'stripe_recommended',
-        E::ts('If you are using Stripe to accept payments on public forms (eg. contribution/event registration forms) it is recommended that you install the <strong><a href="https://lab.civicrm.org/extensions/firewall">firewall</a></strong> extension.
-        Some sites have become targets for spammers who use the payment endpoint to try and test credit cards by submitting invalid payments to your Stripe account.'),
-        E::ts('Recommended Extension: firewall'),
-        \Psr\Log\LogLevel::NOTICE,
-        'fa-lightbulb-o'
+        __FUNCTION__ . E::SHORT_NAME . '_requirements',
+        E::ts('The <em>%1</em> extension requires the <em>Payment Shared</em> extension which is not installed. See <a href="%2" target="_blank">details</a> for more information.',
+          [
+            1 => ucfirst(E::SHORT_NAME),
+            2 => 'https://civicrm.org/extensions/mjwshared',
+          ]
+        ),
+        E::ts('%1: Missing Requirements', [1 => ucfirst(E::SHORT_NAME)]),
+        \Psr\Log\LogLevel::ERROR,
+        'fa-money'
       );
       $message->addAction(
         E::ts('Install now'),
@@ -103,21 +131,20 @@ class CRM_Stripe_Check {
         'href',
         ['path' => 'civicrm/admin/extensions', 'query' => ['action' => 'update', 'id' => $extensionName, 'key' => $extensionName]]
       );
-      $messages[] = $message;
+      $this->messages[] = $message;
+      return;
     }
     if (isset($extensions['id']) && $extensions['values'][$extensions['id']]['status'] === 'installed') {
-      self::requireExtensionMinVersion($messages, $extensionName, CRM_Stripe_Check::MIN_VERSION_FIREWALL, $extensions['values'][$extensions['id']]['version']);
+      $this->requireExtensionMinVersion($extensionName, self::MIN_VERSION_MJWSHARED, $extensions['values'][$extensions['id']]['version']);
     }
   }
 
   /**
-   * @param array $messages
-   *
    * @throws \CiviCRM_API3_Exception
    */
-  private static function checkExtensionSweetalert(&$messages) {
-    // sweetalert: recommended. If installed requires min version
-    $extensionName = 'sweetalert';
+  private function checkExtensionFirewall() {
+    $extensionName = 'firewall';
+
     $extensions = civicrm_api3('Extension', 'get', [
       'full_name' => $extensionName,
     ]);
@@ -125,11 +152,9 @@ class CRM_Stripe_Check {
     if (empty($extensions['count']) || ($extensions['values'][$extensions['id']]['status'] !== 'installed')) {
       $message = new CRM_Utils_Check_Message(
         __FUNCTION__ . 'stripe_recommended',
-        E::ts('It is recommended that you install the <strong><a href="https://civicrm.org/extensions/sweetalert">sweetalert</a></strong> extension.
-        This allows the stripe extension to show useful messages to the user when processing payment.
-        If this is not installed it will fallback to the browser "alert" message but you will
-        not see some messages (such as <em>we are pre-authorizing your card</em> and <em>please wait</em>) and the feedback to the user will not be as helpful.'),
-        E::ts('Recommended Extension: sweetalert'),
+        E::ts('If you are using Stripe to accept payments on public forms (eg. contribution/event registration forms) it is recommended that you install the <strong><a href="https://lab.civicrm.org/extensions/firewall">firewall</a></strong> extension.
+        Some sites have become targets for spammers who use the payment endpoint to try and test credit cards by submitting invalid payments to your Stripe account.'),
+        E::ts('Recommended Extension: firewall'),
         \Psr\Log\LogLevel::NOTICE,
         'fa-lightbulb-o'
       );
@@ -139,96 +164,10 @@ class CRM_Stripe_Check {
         'href',
         ['path' => 'civicrm/admin/extensions', 'query' => ['action' => 'update', 'id' => $extensionName, 'key' => $extensionName]]
       );
-      $messages[] = $message;
-      return;
+      $this->messages[] = $message;
     }
     if (isset($extensions['id']) && $extensions['values'][$extensions['id']]['status'] === 'installed') {
-      self::requireExtensionMinVersion($messages, $extensionName, CRM_Stripe_Check::MIN_VERSION_SWEETALERT, $extensions['values'][$extensions['id']]['version']);
-    }
-  }
-
-  /**
-   * @param array $messages
-   * @param string $extensionName
-   * @param string $minVersion
-   * @param string $actualVersion
-   */
-  private static function requireExtensionMinVersion(&$messages, $extensionName, $minVersion, $actualVersion) {
-    if (version_compare($actualVersion, $minVersion) === -1) {
-      $message = new CRM_Utils_Check_Message(
-        __FUNCTION__ . $extensionName . E::SHORT_NAME . '_requirements',
-        E::ts('The %1 extension requires the %2 extension version %3 or greater but your system has version %4.',
-          [
-            1 => ucfirst(E::SHORT_NAME),
-            2 => $extensionName,
-            3 => $minVersion,
-            4 => $actualVersion
-          ]),
-        E::ts('%1: Missing Requirements', [1 => ucfirst(E::SHORT_NAME)]),
-        \Psr\Log\LogLevel::ERROR,
-        'fa-money'
-      );
-      $message->addAction(
-        E::ts('Upgrade now'),
-        NULL,
-        'href',
-        ['path' => 'civicrm/admin/extensions', 'query' => ['action' => 'update', 'id' => $extensionName, 'key' => $extensionName]]
-      );
-      $messages[] = $message;
-    }
-  }
-
-  /**
-   * @throws \CiviCRM_API3_Exception
-   */
-  private static function checkIfSeparateMembershipPaymentEnabled(&$messages) {
-    $membershipBlocks = civicrm_api3('MembershipBlock', 'get', [
-      'is_separate_payment' => 1,
-      'is_active' => 1,
-    ]);
-    if ($membershipBlocks['count'] === 0) {
-      return;
-    }
-    else {
-      $contributionPagesToCheck = [];
-      foreach ($membershipBlocks['values'] as $blockID => $blockDetails) {
-        if ($blockDetails['entity_table'] !== 'civicrm_contribution_page') {
-          continue;
-        }
-        $contributionPagesToCheck[] = $blockDetails['entity_id'];
-      }
-      $stripePaymentProcessorIDs = civicrm_api3('PaymentProcessor', 'get', [
-        'return' => ['id'],
-        'payment_processor_type_id' => 'Stripe',
-      ]);
-      $stripePaymentProcessorIDs = CRM_Utils_Array::collect('id', $stripePaymentProcessorIDs['values']);
-      if (!empty($contributionPagesToCheck)) {
-        $contributionPages = civicrm_api3('ContributionPage', 'get', [
-          'return' => ['payment_processor'],
-          'id' => ['IN' => $contributionPagesToCheck],
-          'is_active' => 1,
-        ]);
-        foreach ($contributionPages['values'] as $contributionPage) {
-          $enabledPaymentProcessors = explode(CRM_Core_DAO::VALUE_SEPARATOR, $contributionPage['payment_processor']);
-          foreach ($enabledPaymentProcessors as $enabledID) {
-            if (in_array($enabledID, $stripePaymentProcessorIDs)) {
-              $message = new CRM_Utils_Check_Message(
-                __FUNCTION__ . 'stripe_requirements',
-                E::ts('Stripe does not support "Separate Membership Payment" on contribution pages but you have one or more contribution pages with
-                that setting enabled and Stripe as the payment processor (found on contribution page ID: %1).',
-                  [
-                    1 => $contributionPage['id'],
-                  ]),
-                E::ts('Stripe: Invalid configuration'),
-                \Psr\Log\LogLevel::ERROR,
-                'fa-money'
-              );
-              $messages[] = $message;
-              return;
-            }
-          }
-        }
-      }
+      $this->requireExtensionMinVersion($extensionName, CRM_Stripe_Check::MIN_VERSION_FIREWALL, $extensions['values'][$extensions['id']]['version']);
     }
   }
 
@@ -237,7 +176,7 @@ class CRM_Stripe_Check {
    *
    * @param array $messages
    */
-  private static function checkUpgradeMessages(&$messages) {
+  private function checkUpgradeMessages() {
     // @todo: When we release 6.7 we need to think about if this should be displayed or not (consider install/upgrade).
     if ((bool) \Civi::settings()->get('stripe_upgrade66message')) {
       $message = new CRM_Utils_Check_Message(
@@ -263,7 +202,7 @@ class CRM_Stripe_Check {
         'api3',
         ['Setting', 'create', ['stripe_upgrade66message' => 0]]
       );
-      $messages[] = $message;
+      $this->messages[] = $message;
     }
   }
 
diff --git a/stripe.php b/stripe.php
index 842db0d1ecb3bc26a3bfe1cde1d214a0dce98800..c7581cd25639dad497faccc6099f2417ba582f97 100644
--- a/stripe.php
+++ b/stripe.php
@@ -231,7 +231,8 @@ function stripe_civicrm_buildForm($formName, &$form) {
  * @throws \CiviCRM_API3_Exception
  */
 function stripe_civicrm_check(&$messages) {
-  CRM_Stripe_Check::checkRequirements($messages);
+  $checks = new CRM_Stripe_Check($messages);
+  $messages = $checks->checkRequirements();
   // If we didn't install mjwshared yet check requirements but don't crash when checking webhooks
   if (trait_exists('CRM_Mjwshared_WebhookTrait')) {
     CRM_Stripe_Webhook::check($messages);