diff --git a/apdqc.install b/apdqc.install
index 4dfb055..9ea3fdb 100644
--- a/apdqc.install
+++ b/apdqc.install
@@ -129,6 +129,26 @@ function apdqc_requirements($phase) {
 
   if ($phase === 'runtime') {
 
+    // Only working with MySQL currently.
+    $db_type = apdqc_fast_get_db_type();
+    if ($db_type !== 'mysql') {
+      $requirements['apdqc_mysql'] = array(
+        'title' => $t('APDQC'),
+        'value' => $phase === 'install' ? FALSE : $t('This module requires MySQL.'),
+        'description' => $t('Currently APDQC only works with MySQL.'),
+        'severity' => REQUIREMENT_ERROR,
+      );
+    }
+    // Only working with php 5.3+.
+    if (!defined('PHP_VERSION_ID') || PHP_VERSION_ID < 50300) {
+      $requirements['apdqc_php'] = array(
+        'title' => $t('APDQC'),
+        'value' => $phase === 'install' ? FALSE : $t('This module requires PHP 5.3 or higher.'),
+        'description' => $t('Currently APDQC only works with PHP 5.3 or newer.'),
+        'severity' => REQUIREMENT_ERROR,
+      );
+    }
+
     if (!variable_get('apdqc_install_ignore_mysql_version', APDQC_INSTALL_IGNORE_MYSQL_VERSION)) {
       // This module requires MySQL 5.5 or higher.
       $results = db_query("SELECT VERSION()")->fetchAssoc();
@@ -808,14 +828,32 @@ function apdqc_requirements($phase) {
 
   // Test the connection.
   if (empty($requirements)) {
-    // Check if the system module is in the system table. See if apdqc_query
-    // is working.
-    $result = apdqc_query(array('system'), array(), "SELECT * FROM " . apdqc_fast_prefix_tables('{' . apdqc_fast_escape_table('system') . "} WHERE name = 'system'") . " LIMIT 1", array('log' => FALSE));
-    if (!($result instanceof mysqli_result)) {
-      $requirements['apdqc_query_broken'] = array(
-        'title'       => $t('APDQC - Query Failure'),
+    if (class_exists('APDQCache')) {
+      if (!function_exists('apdqc_query')) {
+        // Load the correct database backend.
+        $db_type = apdqc_fast_get_db_type();
+        // Async queries are only available in PHP 5.3+.
+        if ($db_type === 'mysql' && defined('PHP_VERSION_ID') && PHP_VERSION_ID >= 50300) {
+          require_once 'apdqc.mysql.inc';
+        }
+      }
+      // Check if the system module is in the system table. See if apdqc_query
+      // is working.
+      $result = apdqc_query(array('system'), array(), "SELECT * FROM " . apdqc_fast_prefix_tables('{' . apdqc_fast_escape_table('system') . '}') . " WHERE name = 'system' LIMIT 1", array('log' => FALSE));
+      if (!($result instanceof mysqli_result)) {
+        $requirements['apdqc_query_broken'] = array(
+          'title'       => $t('APDQC - Query Failure'),
+          'severity'    => REQUIREMENT_ERROR,
+          'value'       => $t('apdqc_query() is not returning valid data. Check your settings.php file and make sure the database portion is correct.'),
+        );
+      }
+    }
+    else {
+      // This should never show up, as it's covered above.
+      $requirements['apdqc_query_no_APDQCache_class'] = array(
+        'title'       => $t('APDQC - APDQCache Class not available'),
         'severity'    => REQUIREMENT_ERROR,
-        'value'       => $t('apdqc_query() is not returning valid data. Check your settings.php file and make sure the database portion is correct.'),
+        'value'       => $t('Make sure the cache_backends array contains apdqc.cache.inc.'),
       );
     }
   }
