diff --git a/js/modules.js b/js/modules.js
index 9579215..aa9929c 100644
--- a/js/modules.js
+++ b/js/modules.js
@@ -16,40 +16,79 @@ Drupal.behaviors.moduleFilter = {
         childSelector: 'td:nth(1)',
         rules: [
           function(moduleFilter, item) {
+            var main_filter_passed = false;
+            var ver_filter_passed = false;
+            
+            // Check if the main filter passed:
             if (moduleFilter.options.showEnabled) {
               if (item.status && !item.disabled) {
-                return true;
+                main_filter_passed = true;
               }
             }
             if (moduleFilter.options.showDisabled) {
               if (!item.status && !item.disabled) {
-                return true;
+                main_filter_passed = true;
               }
             }
             if (moduleFilter.options.showRequired) {
               if (item.status && item.disabled) {
-                return true;
+                main_filter_passed = true;
               }
             }
             if (moduleFilter.options.showUnavailable) {
               if (!item.status && item.disabled) {
-                return true;
+                main_filter_passed = true;
               }
             }
-            return false;
+            
+            // Check if the version filter passed:
+            if (moduleFilter.options.showDev) {
+              if (item.version.match(/dev/)) {
+                ver_filter_passed = true;
+              }
+            }
+            if (moduleFilter.options.showAlpha) {
+              if (item.version.match(/alpha/)) {
+                ver_filter_passed = true;
+              }
+            }
+            if (moduleFilter.options.showBeta) {
+              if (item.version.match(/beta/)) {
+                ver_filter_passed = true;
+              }
+            }
+            if (moduleFilter.options.showRc) {
+              if (item.version.match(/rc/)) {
+                ver_filter_passed = true;
+              }
+            }
+            if (moduleFilter.options.showReleased) {
+              if (!item.version.match(/(dev|alpha|beta|rc)/)) {
+                ver_filter_passed = true;
+              }
+            }
+            
+            // Both filters must pass to display module:
+            return main_filter_passed && ver_filter_passed;
           }
         ],
         buildIndex: [
           function(moduleFilter, item) {
             item.status = $('td.checkbox :checkbox', item.element).is(':checked');
             item.disabled = $('td.checkbox :checkbox', item.element).is(':disabled');
+            item.version = $('td.version', item.element).text();
             return item;
           }
         ],
-        showEnabled: $('#edit-module-filter-show-enabled').is(':checked'),
-        showDisabled: $('#edit-module-filter-show-disabled').is(':checked'),
-        showRequired: $('#edit-module-filter-show-required').is(':checked'),
-        showUnavailable: $('#edit-module-filter-show-unavailable').is(':checked')
+        showEnabled:      $('#edit-module-filter-show-enabled').is(':checked'),
+        showDisabled:     $('#edit-module-filter-show-disabled').is(':checked'),
+        showRequired:     $('#edit-module-filter-show-required').is(':checked'),
+        showUnavailable:  $('#edit-module-filter-show-unavailable').is(':checked'),
+        showDev:          $('#edit-module-filter-show-ver-dev').is(':checked'),
+        showAlpha:        $('#edit-module-filter-show-ver-alpha').is(':checked'),
+        showBeta:         $('#edit-module-filter-show-ver-beta').is(':checked'),
+        showRc:           $('#edit-module-filter-show-ver-rc').is(':checked'),
+        showReleased:     $('#edit-module-filter-show-ver-released').is(':checked')
       });
 
       var moduleFilter = filterInput.data('moduleFilter');
@@ -111,6 +150,26 @@ Drupal.behaviors.moduleFilter = {
         moduleFilter.options.showUnavailable = $(this).is(':checked');
         moduleFilter.applyFilter();
       });
+      $('#edit-module-filter-show-ver-dev', context).change(function() {
+        moduleFilter.options.showDev = $(this).is(':checked');
+        moduleFilter.applyFilter();
+      });
+      $('#edit-module-filter-show-ver-alpha', context).change(function() {
+        moduleFilter.options.showAlpha = $(this).is(':checked');
+        moduleFilter.applyFilter();
+      });
+      $('#edit-module-filter-show-ver-beta', context).change(function() {
+        moduleFilter.options.showBeta = $(this).is(':checked');
+        moduleFilter.applyFilter();
+      });
+      $('#edit-module-filter-show-ver-rc', context).change(function() {
+        moduleFilter.options.showRc = $(this).is(':checked');
+        moduleFilter.applyFilter();
+      });
+      $('#edit-module-filter-show-ver-released', context).change(function() {
+        moduleFilter.options.showReleased = $(this).is(':checked');
+        moduleFilter.applyFilter();
+      });
 
       if (!Drupal.settings.moduleFilter.tabs) {
         moduleFilter.element.bind('moduleFilter:start', function() {
diff --git a/module_filter.module b/module_filter.module
index 57ff951..c9ae049 100644
--- a/module_filter.module
+++ b/module_filter.module
@@ -67,16 +67,45 @@ function module_filter_form_system_modules_alter(&$form, &$form_state, $form_id)
       )
     )
   );
+  
+  // Main checkbox filters.
   $checkbox_defaults = array(
-    ((isset($_GET['enabled'])) ? $_GET['enabled'] : 1) ? 'enabled' : '',
-    ((isset($_GET['disabled'])) ? $_GET['disabled'] : 1) ? 'disabled' : '',
-    ((isset($_GET['required'])) ? $_GET['required'] : 1) ? 'required' : '',
-    ((isset($_GET['unavailable'])) ? $_GET['unavailable'] : 1) ? 'unavailable' : ''
+    ((isset($_GET['enabled']))      ? $_GET['enabled']      : 1)  ? 'enabled'     : '',
+    ((isset($_GET['disabled']))     ? $_GET['disabled']     : 1)  ? 'disabled'    : '',
+    ((isset($_GET['required']))     ? $_GET['required']     : 1)  ? 'required'    : '',
+    ((isset($_GET['unavailable']))  ? $_GET['unavailable']  : 1)  ? 'unavailable' : '',
   );
   $form['module_filter']['show'] = array(
     '#type' => 'checkboxes',
     '#default_value' => array_filter($checkbox_defaults),
-    '#options' => array('enabled' => t('Enabled'), 'disabled' => t('Disabled'), 'required' => t('Required'), 'unavailable' => t('Unavailable')),
+    '#options' => array(
+      'enabled'     => t('Enabled'),
+      'disabled'    => t('Disabled'),
+      'required'    => t('Required'),
+      'unavailable' => t('Unavailable'),
+    ),
+    '#prefix' => '<div id="module-filter-show-wrapper">',
+    '#suffix' => '</div>'
+  );
+  
+  // Version checkbox filters.
+  $ver_checkbox_defaults = array(
+    ((isset($_GET['dev']))          ? $_GET['dev']          : 1)  ? 'dev'         : '',
+    ((isset($_GET['alpha']))        ? $_GET['alpha']        : 1)  ? 'alpha'       : '',
+    ((isset($_GET['beta']))         ? $_GET['beta']         : 1)  ? 'beta'        : '',
+    ((isset($_GET['rc']))           ? $_GET['rc']           : 1)  ? 'rc'          : '',
+    ((isset($_GET['released']))     ? $_GET['released']     : 1)  ? 'released'    : '',
+  );
+  $form['module_filter']['show_ver'] = array(
+    '#type' => 'checkboxes',
+    '#default_value' => array_filter($ver_checkbox_defaults),
+    '#options' => array(
+      'dev'         => t('dev'),
+      'alpha'       => t('alpha'),
+      'beta'        => t('beta'),
+      'rc'          => t('rc'),
+      'released'    => t('released'),
+    ),
     '#prefix' => '<div id="module-filter-show-wrapper">',
     '#suffix' => '</div>'
   );
