diff --git a/README.txt b/README.txt
index b6e507a..4c94654 100644
--- a/README.txt
+++ b/README.txt
@@ -6,9 +6,6 @@ The following modules are required to be installed:
 Media
 http://drupal.org/project/media
 
-Styles
-http://drupal.org/project/styles
-
 Important!
 In order to run rotating banners you have to copy two scripts to the server directory
 
diff --git a/rotating_banner.admin.js b/rotating_banner.admin.js
index f40aff2..48dcade 100644
--- a/rotating_banner.admin.js
+++ b/rotating_banner.admin.js
@@ -12,6 +12,27 @@ Drupal.behaviors.RotatingBannerSettings = {
 
   attach: function(context) {
     $('#block-admin-configure', context).once('rotatingBannerAdminProcessed', function() {
+
+      /**
+       * Function to add slides (images) after they are selected by the media browser.
+       *
+       * Also fires the ajax call via a trigger('mousedown') to save them and refresh the form.
+       * @param mediaFiles
+       */
+      var addSlides = function(mediaFiles) {
+        var fids = new Array;
+        for (i in mediaFiles) {
+          fids.push(mediaFiles[i].fid);
+        }
+        $('#edit-rotating-banner-slides-new-fids').val(fids.join(','));
+        // See rotating_banner.module: This is sort of a hack, we are hitting a hidden submit button.
+        $('#edit-rotating-banner-slides-refresh').trigger('mousedown');
+      }
+      // Make the add slide button a media launcher
+      $('.rb-add-slide-link').click(function() {
+        Drupal.media.popups.mediaBrowser(addSlides, {multiselect: true});
+        return false;
+      });
       // Set up the effect preview div.
       $('#edit-rotating-banner-banner-settings-cycle-fx').bind('change', function() {
         if ($(this).val() === '') {
diff --git a/rotating_banner.module b/rotating_banner.module
index 0c508c7..e50beb9 100644
--- a/rotating_banner.module
+++ b/rotating_banner.module
@@ -25,7 +25,7 @@ function rotating_banner_menu() {
     'access arguments' => array('administer blocks'),
     'file' => 'rotating_banner.admin.inc',
   );
-  
+
   $items['admin/structure/rotating_banner/slide/%rotating_banner_slide/edit'] = array(
     'title' => 'Create new slide',
     'description' => 'Creates a new rotating banner slide.',
@@ -191,6 +191,8 @@ function rotating_banner_block_info() {
  */
 function rotating_banner_block_configure($delta) {
   $rbid = $delta;
+  // Includs the media browser plugin.
+  module_load_include('inc', 'media', 'includes/media.browser');
 
   $banner = rotating_banner_load($rbid);
   $defaults = rotating_banner_defaults();
@@ -208,11 +210,13 @@ function rotating_banner_block_configure($delta) {
   $form['#attached']['js'][] = $path . '/includes/jquery.easing.js';
   $form['#attached']['js'][] = $path . '/includes/jquery.cycle.js';
 
+  // Add the media browser javascript.
+  media_attach_browser_js($form);
+
   // Add sweet effects
   $form['#attached']['libraries'] = array();
   $form['#attached']['libraries'][] = 'effects';
 
-
   $form['rotating_banner'] = array('#tree' => TRUE);
   $rb_form =& $form['rotating_banner'];
 
@@ -227,12 +231,43 @@ function rotating_banner_block_configure($delta) {
 
   $rb_form['slides'] = array(
     '#type' => 'fieldset',
-    '#title' => t('Banner images'),
+    '#title' => t('Images'),
     '#collapsible' => TRUE,
   );
 
+  /**
+   * Creates a hidden button which is used to submit the form via ajax so new slides can be shown.
+   *
+   * This feels like a hack, but it was hard to use the AJAX framework and submit it without attaching
+   * to an element.  No user (even with js disabled) would see this button since clicking add slide
+   * would go to the new slide form directly.
+   */
+  $rb_form['slides']['refresh'] = array(
+    '#ajax' => array(
+      'callback' => 'rotating_banner_ajax_update_slides',
+      'wrapper' => 'slide-table-wrapper',
+      'method' => 'replace',
+      'effect' => 'fade',
+    ),
+    '#type' => 'submit',
+    '#value' => 'refresh',
+    '#submit' => array('rotating_banner_update_slides_submit'),
+    '#attributes' => array('style' => 'display:none'),
+  );
+
+  /**
+   * When a user adds new images via the media browser, they are added to this hidden variable
+   * so they can be saved via the ajax call.
+   */
+  $rb_form['slides']['new_fids'] = array(
+    '#type' => 'hidden',
+    '#attributes' => array('id' => 'edit-rotating-banner-slides-new-fids'),
+  );
+
   $rb_form['slides']['slide_table'] = array(
     '#theme' => 'rotating_banner_settings_form_slides',
+    '#prefix' => '<div id="slide-table-wrapper">',
+    '#suffix' => '</div>',
   );
 
   $rb_form['slides']['slide_table']['weight'] = array('#tree' => TRUE);
@@ -255,11 +290,10 @@ function rotating_banner_block_configure($delta) {
     );
 
     $rb_form['slides']['slide_table']['background'][$slide->sid] = $preview;
-    
   }
-  
+
   $rb_form['slides']['add'] = array(
-    '#markup' => l(t('Add a new slide to this banner'), 'admin/structure/rotating_banner/' . $rbid . '/slide/add'),
+    '#markup' => l(t('Add images'), 'admin/structure/rotating_banner/' . $rbid . '/slide/add', array('attributes' => array('class' => array('rb-add-slide-link')))),
   );
 
   $rb_form['banner_settings'] = array(
@@ -358,6 +392,27 @@ function rotating_banner_block_configure($delta) {
   return $form;
 }
 
+/**
+ * Called instead of the normal submit in case of a reload when slides are added.
+ *
+ * @param $form
+ * @param $form_state
+ *
+ */
+function rotating_banner_update_slides_submit($form, &$form_state) {
+  $fids = explode(',', $form_state['values']['rotating_banner']['slides']['new_fids']);
+  $rbid = $form_state['values']['delta'];
+  foreach ($fids as $fid) {
+    // @todo: add some error checking here.
+    $slide = RotatingBannerSlide::create($rbid, NULL, $fid);
+  }
+  $form_state['rebuild'] = TRUE;
+}
+
+function rotating_banner_ajax_update_slides($form, &$form_state) {
+  return $form['settings']['rotating_banner']['slides']['slide_table'];
+}
+
 function theme_rotating_banner_settings_form_slides($variables) {
   $fieldset = $variables['fieldset'];
   if (!isset($fieldset['background'])) {
@@ -370,16 +425,16 @@ function theme_rotating_banner_settings_form_slides($variables) {
       'data' => array(
         drupal_render($fieldset['background'][$key]),
         drupal_render($fieldset['link'][$key]),
-        drupal_render($fieldset['weight'][$key]),
         l(t('Edit'), 'admin/structure/rotating_banner/slide/' . $key . '/edit'),
         l(t('Delete'), 'admin/structure/rotating_banner/slide/' . $key . '/delete'),
+        drupal_render($fieldset['weight'][$key]),
        ),
       'class' => array('draggable'),
     );
   }
   
   drupal_add_tabledrag('rb-slide-order', 'order', 'sibling', 'rb-slide-weight');
-  return theme('table', array('header' => array(t('Image'), t('Link'), t('Weight'), array('data' => t('Operations'), 'colspan' => '2')), 'rows' => $rows, 'attributes' => array('id' => 'rb-slide-order')));
+  return theme('table', array('header' => array(t('Image'), t('Link'), array('data' => t('Operations'), 'colspan' => '2'),t('Weight')), 'rows' => $rows, 'attributes' => array('id' => 'rb-slide-order')));
 }
 
 
