diff --git a/displays/classic/feedback-classic.css b/displays/classic/feedback-classic.css
new file mode 100644
index 0000000..6d66ba1
--- /dev/null
+++ b/displays/classic/feedback-classic.css
@@ -0,0 +1,90 @@
+
+/**
+ * Styles for the feedback form.
+ */
+/* Reset commonly set styles */
+#block-feedback-form,
+#block-feedback-form .feedback-link,
+#block-feedback-form .feedback-link *,
+#block-feedback-form .content,
+#block-feedback-form form {
+  float: none;
+  margin: 0;
+  padding: 0;
+  border: 0;
+  font-size: 100%;
+  font-weight: normal;
+  color: inherit;
+}
+
+#block-feedback-form {
+  display: none;
+  position: fixed;
+  bottom: 60px;
+  right: 20px;
+  overflow: hidden;
+  z-index: 10;
+}
+
+#block-feedback-form .feedback-link {
+  padding: 0.3em 0;
+  text-align: right;
+  font-size: 12px;
+}
+
+#block-feedback-form .feedback-link * {
+  display: inline;
+ font-size: 12px;
+}
+
+#block-feedback-form form {
+  border: 1px solid #ccc;
+  padding: 6px;
+  background-color: #fff;
+  opacity: 0.9;
+  max-width: 300px;
+}
+/* IE6 doesn't support max-width. */
+* html #block-feedback-form form {
+  width: 300px;
+}
+#block-feedback-form .feedback-help {
+  margin: 0 0 0.5em;
+  font-size: 10px;
+  line-height: normal;
+}
+#block-feedback-form input[type="text"] {
+  -moz-box-sizing: border-box;
+  -webkit-box-sizing: border-box;
+  box-sizing: border-box;
+  max-width: 100%;
+}
+#block-feedback-form .form-actions {
+  margin: 1em 0 0;
+  padding: 0;
+}
+
+/* Ajax interaction styles */
+#block-feedback-form .feedback-message {
+  height: 10ex;
+}
+#block-feedback-form .ajax-progress .throbber {
+  background: transparent url(/images/throbber.gif) no-repeat left center;
+  height: 16px;
+  width: 16px;
+}
+
+/**
+ * Styles for existing feedback messages.
+ */
+#block-feedback-form .feedback-entry {
+  font-size: 80%;
+}
+.feedback-entry .feedback-submitted {
+  margin-top: 0.2em;
+  font-size: 90%;
+}
+.feedback-entry .browserinfo {
+  color: #666;
+  font-size: 80%;
+}
diff --git a/displays/classic/feedback-classic.js b/displays/classic/feedback-classic.js
new file mode 100644
index 0000000..1571ea6
--- /dev/null
+++ b/displays/classic/feedback-classic.js
@@ -0,0 +1,59 @@
+(function ($) {
+
+/**
+ * Attach collapse behavior to the feedback form block.
+ */
+Drupal.behaviors.feedbackForm = {
+  attach: function (context) {
+    $('#block-feedback-form', context).once('feedback', function () {
+      var $block = $(this);
+      $block.find('span.feedback-link')
+        .prepend('<span id="feedback-form-toggle">[ + ]</span> ')
+        .css('cursor', 'pointer')
+        .toggle(function () {
+            Drupal.feedbackFormToggle($block, false);
+          },
+          function() {
+            Drupal.feedbackFormToggle($block, true);
+          }
+        );
+      $block.find('form').hide();
+      $block.show();
+    });
+  }
+};
+
+/**
+ * Re-collapse the feedback form after every successful form submission.
+ */
+Drupal.behaviors.feedbackFormSubmit = {
+  attach: function (context) {
+    var $context = $(context);
+    if (!$context.is('#feedback-status-message')) {
+      return;
+    }
+    // Collapse the form.
+    $('#block-feedback-form .feedback-link').click();
+    // Blend out and remove status message.
+    window.setTimeout(function () {
+      $context.fadeOut('slow', function () {
+        $context.remove();
+      });
+    }, 3000);
+  }
+};
+
+/**
+ * Collapse or uncollapse the feedback form block.
+ */
+Drupal.feedbackFormToggle = function ($block, enable) {
+  $block.find('form').slideToggle('medium');
+  if (enable) {
+    $('#feedback-form-toggle', $block).html('[ + ]');
+  }
+  else {
+    $('#feedback-form-toggle', $block).html('[ &minus; ]');
+  }
+};
+
+})(jQuery);
diff --git a/displays/left_tab/feedback-left-tab.css b/displays/left_tab/feedback-left-tab.css
new file mode 100644
index 0000000..cdb667d
--- /dev/null
+++ b/displays/left_tab/feedback-left-tab.css
@@ -0,0 +1,183 @@
+
+/**
+ * Styles for the feedback form.
+ */
+/* Reset commonly set styles */
+#block-feedback-form,
+#block-feedback-form .feedback-link,
+#block-feedback-form .feedback-link *,
+#block-feedback-form .content,
+#block-feedback-form form {
+  float: none;
+  margin: 0;
+  padding: 0;
+  border: 0;
+  font-size: 100%;
+  font-weight: normal;
+  color: inherit;
+  font-family: 'Arial', 'Helvetica', sans-serif;
+}
+
+#block-feedback-form {
+  position: fixed;
+  top: 45%;
+  left: 0px;
+  z-index: 100000;
+  width: 35px;
+}
+#block-feedback-form.active {
+  top: auto;
+  bottom: 0;
+  overflow: hidden;
+  -moz-box-shadow: 0 0 5px #888;
+  -webkit-box-shadow: 0 0 5px #888;
+  box-shadow: 0 0 5px #888;
+  width: 300px;
+}
+#block-feedback-form .content {
+  position: absolute;
+  height: 1px;
+  width: 1px;
+  overflow: hidden;
+  clip: rect(1px, 1px, 1px, 1px);
+  filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=0);
+  opacity: 0;
+  -webkit-transition: all 300ms ease-out 0s;
+  -moz-transition: all 300ms ease-out 0s;
+  -o-transition: all 300ms ease-out 0s;
+  transition: all 300ms ease-out 0s;
+}
+#block-feedback-form.active .content {
+  position: static;
+  clip: auto;
+  height: auto;
+  width: auto;
+  overflow: hidden;
+  filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=1);
+  opacity: 1;
+  width: 300px;
+}
+
+#block-feedback-form h2 {
+  padding: 5px 0 2px 0;
+  font-weight: normal;
+  font-size: 16px;
+  -webkit-transform-origin: 0 0;
+  -moz-transform-origin: 0 0;
+  -o-transform-origin: 0 0;
+  -ms-transform-origin: 0 0;
+  -webkit-transform: rotate(-90deg);  /* Safari 3.1+, Chrome */
+  -moz-transform: rotate(-90deg);  /* Firefox 3.5-15 */
+  -ms-transform: rotate(-90deg);  /* IE9 */
+  -o-transform: rotate(-90deg);  /* Opera 10.5-12.00 */
+  transform: rotate(-90deg);  /* Firefox 16+, Opera 12.50+ */
+  -webkit-transition: all 300ms ease-out 0s;
+  -moz-transition: all 300ms ease-out 0s;
+  -o-transition: all 300ms ease-out 0s;
+  transition: all 300ms ease-out 0s;
+}
+#block-feedback-form a {
+  color: #E16026;
+}
+#block-feedback-form.active h2 {
+  -webkit-transform: rotate(0deg);  /* Safari 3.1+, Chrome */
+  -moz-transform: rotate(0deg);  /* Firefox 3.5-15 */
+  -ms-transform: rotate(0deg);  /* IE9 */
+  -o-transform: rotate(0deg);  /* Opera 10.5-12.00 */
+  transform: rotate(0deg);  /* Firefox 16+, Opera 12.50+ */
+  margin: -6px 0 0 0;
+  clear: both;
+}
+#block-feedback-form .feedback-link {
+  padding: 10px;
+  background: #eee;
+  color: #333;
+  font-weight: normal;
+  font-family: 'Arial', 'Helvetica', sans-serif;
+  -moz-box-shadow: 0 0 5px #888;
+  -webkit-box-shadow: 0 0 5px #888;
+  box-shadow: 0 0 5px #888;
+  -webkit-transition: all 300ms ease-out 0s;
+  -moz-transition: all 300ms ease-out 0s;
+  -o-transition: all 300ms ease-out 0s;
+  transition: all 300ms ease-out 0s;
+}
+#block-feedback-form .feedback-link:hover {
+  background: #333;
+  color: #eee;
+}
+#block-feedback-form.active .feedback-link {
+  -moz-box-shadow: none;
+  -webkit-box-shadow: none;
+  box-shadow: none;
+  width: 100%;
+  padding: 10px 20px;
+  float: left;
+  background: #333;
+  color: #eee;
+}
+#block-feedback-form.active .feedback-link:hover {
+  background: #eee;
+  color: #333;
+}
+#block-feedback-form form {
+  border: 0;
+  padding: 20px;
+  background-color: #fff;
+  filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=.98);
+  opacity: .98;
+  max-width: 300px;
+}
+#block-feedback-form form text-area,
+#block-feedback-form form select {
+  border: 1px solid #ddd;
+}
+#block-feedback-form form .form-submit {
+  clear: both;
+  background: #f5f5f5;
+  color: #E16026;
+  border: 1px solid #ddd;
+  padding: 5px 10px;
+  text-align: center;
+  text-transform: uppercase;
+  line-height: 20px;
+  -moz-border-radius: 5px;
+  border-radius: 5px;
+  font-size: 12px;
+}
+#block-feedback-form .feedback-help {
+  margin: 0 0 0.5em;
+  font-size: 10px;
+  line-height: normal;
+}
+#block-feedback-form input[type="text"] {
+  -moz-box-sizing: border-box;
+  -webkit-box-sizing: border-box;
+  box-sizing: border-box;
+  max-width: 100%;
+}
+#block-feedback-form .form-actions {
+  margin: 1em 0 0;
+  padding: 15px 0 0 0;
+  clear: both;
+  display: block;
+}
+#block-feedback-form .ajax-progress .throbber {
+  height: 16px;
+  width: 16px;
+}
+
+/**
+ * Styles for existing feedback messages.
+ */
+#block-feedback-form .feedback-entry {
+  font-size: 80%;
+}
+.feedback-entry .feedback-submitted {
+  margin-top: 0.2em;
+  font-size: 90%;
+}
+.feedback-entry .browserinfo {
+  color: #666;
+  font-size: 80%;
+}
diff --git a/displays/left_tab/feedback-left-tab.js b/displays/left_tab/feedback-left-tab.js
new file mode 100644
index 0000000..d5ef1c9
--- /dev/null
+++ b/displays/left_tab/feedback-left-tab.js
@@ -0,0 +1,50 @@
+(function ($) {
+
+/**
+ * Attach collapse behavior to the feedback form block.
+ */
+Drupal.behaviors.feedbackForm = {
+  attach: function (context) {
+    $('#block-feedback-form', context).once('feedback', function () {
+      var $block = $(this);
+      $block.find('span.feedback-link')
+        .css('cursor', 'pointer')
+        .toggle(function () {
+            Drupal.feedbackFormToggle($block, false);
+          },
+          function() {
+            Drupal.feedbackFormToggle($block, true);
+          }
+        );
+      $block.show();
+    });
+  }
+};
+
+/**
+ * Re-collapse the feedback form after every successful form submission.
+ */
+Drupal.behaviors.feedbackFormSubmit = {
+  attach: function (context) {
+    // Collapse the form.
+    var $context = $(context);
+    if (!$context.is('#feedback-status-message')) {
+      return;
+    }
+    $('#block-feedback-form .feedback-link').click();
+    // Blend out and remove status message.
+    window.setTimeout(function () {
+      $('#feedback-status-message').fadeOut('slow');
+      $('#feedback-status-message').remove();
+    }, 3000);
+  }
+};
+
+/**
+ * Collapse or uncollapse the feedback form block.
+ */
+Drupal.feedbackFormToggle = function ($block, enable) {
+  $('#block-feedback-form').toggleClass('active');
+};
+
+})(jQuery);
diff --git a/feedback.admin.inc b/feedback.admin.inc
index 425df52..98cfa82 100644
--- a/feedback.admin.inc
+++ b/feedback.admin.inc
@@ -253,6 +253,22 @@ function feedback_entry_form_delete_submit($form, &$form_state) {
  * @ingroup forms
  */
 function feedback_admin_settings_form($form, &$form_state) {
+  $options = array();
+  foreach (module_implements('feedback_display_options') as $module) {
+    $settings = call_user_func($module . '_feedback_display_options');
+    if (isset($settings) && is_array($settings)) {
+      foreach ($settings as $key => $setting) {
+        $options[$key] = $setting['name'];
+      }
+    }
+  }
+  $form['feedback_display'] = array(
+    '#type' => 'radios',
+    '#title' => t('Display for feedback form'),
+    '#default_value' => variable_get('feedback_display', 'classic'),
+    '#options' => $options,
+    '#description' => t('Choose the display mode for the feedback form. Classic mode places the feedback form as an expanding "+" in the bottom right of the page.'),
+  );
   $form['feedback_excluded_paths'] = array(
     '#type' => 'textarea',
     '#title' => t('Paths to exclude from feedback display'),
diff --git a/feedback.api.php b/feedback.api.php
index 824569e..fb0135b 100644
--- a/feedback.api.php
+++ b/feedback.api.php
@@ -129,5 +129,34 @@ function hook_feedback_view_alter(&$build) {
 }
 
 /**
+ * Add options for the display of the feedback form.
+ *
+ * Implement this hook to add a new display option for the feedback form.
+ *
+ * @return array
+ *  An associative array keyed by machine name of the options in which the
+ *  values are an array containing
+ *  - name: the human readable name of the option.
+ *  - css: an optional path to a css file to load.
+ *  - js: an optional path to a js file to load.
+ *
+ */
+function hook_feedback_display_options() {
+  $path = drupal_get_path('module', 'feedback') . '/displays';
+  return array(
+    'classic' => array(
+      'name' => t('Classic'),
+      'css' => $path . '/classic/feedback-classic.css',
+      'js' => $path . '/classic/feedback-classic.js',
+    ),
+    'left_tab' => array(
+      'name' => t('Left Tab'),
+      'css' => $path . '/left-tab/feedback-left-tab.css',
+      'js' => $path . '/left-tab/feedback-left-tab.js',
+    ),
+  );
+}
+
+/**
  * @} End of "addtogroup hooks".
  */
diff --git a/feedback.module b/feedback.module
index f11a970..ca62ec5 100644
--- a/feedback.module
+++ b/feedback.module
@@ -218,9 +218,25 @@ function feedback_page_build(&$page) {
       '#title' => t('Feedback'),
       '#content' => drupal_get_form('feedback_form'),
     );
-    $path = drupal_get_path('module', 'feedback');
-    $page['page_bottom']['feedback']['#attached']['css'][] = $path . '/feedback.css';
-    $page['page_bottom']['feedback']['#attached']['js'][] = $path . '/feedback.js';
+  }
+}
+
+/**
+ * Preprocess variables for the feedback form.
+ * Add css and js for the selected display type.
+ */
+function feedback_preprocess_feedback_form_display(&$variables) {
+  $display = variable_get('feedback_display', 'classic');
+  foreach (module_implements('feedback_display_options') as $module) {
+    $settings = call_user_func($module . '_feedback_display_options');
+    if (isset($settings) && is_array($settings) && isset($settings[$display])) {
+      if (isset($settings[$display]['css'])) {
+        drupal_add_css($settings[$display]['css']);
+      }
+      if (isset($settings[$display]['js'])) {
+        drupal_add_js($settings[$display]['js']);
+      }
+    }
   }
 }
 
@@ -602,3 +618,24 @@ function feedback_views_api() {
     'path' => drupal_get_path('module', 'feedback') . '/views',
   );
 }
+
+/**
+ * Implements hook_feedback_display_options().
+ */
+function feedback_feedback_display_options() {
+  $path = drupal_get_path('module', 'feedback') . '/displays';
+  return array(
+    'classic' => array(
+      'name' => t('Classic'),
+      'css' => $path . '/classic/feedback-classic.css',
+      'js' => $path . '/classic/feedback-classic.js',
+    ),
+    'left_tab' => array(
+      'name' => t('Left Tab'),
+      'css' => $path . '/left_tab/feedback-left-tab.css',
+      'js' => $path . '/left_tab/feedback-left-tab.js',
+    ),
+  );
+}
+
+
