diff --git a/chosen.js b/chosen.js
index fa78ce9..ab2bd0d 100644
--- a/chosen.js
+++ b/chosen.js
@@ -2,30 +2,33 @@
   Drupal.behaviors.chosen = {
     attach: function(context, settings) {
       settings.chosen = settings.chosen || Drupal.settings.chosen;
-      var minWidth = settings.chosen.minimum_width;
       var minOptionsSingle = settings.chosen.minimum_single;
       var minOptionsMultiple = settings.chosen.minimum_multiple;
       var minOptions;
       // Define options.
       var multiple = Drupal.settings.chosen.multiple;
       var maxSelectedOptions = Drupal.settings.chosen.max_selected_options;
-      var options = {};
 
       // Prepare selector and add unwantend selectors.
       var selector = settings.chosen.selector;
 
+      // Function to prepare all the options together for the chosen() call.
+      var getElementOptions = function (element) {
+        var options = jQuery.extend({}, settings.chosen.options);
+        if ($(element).width() > options.width) {
+          options.width = $(element).width() + 'px';
+        }
+        else {
+          options.width += 'px';
+        }
+        return options;
+      };
+
       $(selector, context)
-         .not('#field-ui-field-overview-form select, #field-ui-display-overview-form select, .wysiwyg, .draggable select[name$="[weight]"], .draggable select[name$="[position]"]') //disable chosen on field ui
+        .not('#field-ui-field-overview-form select, #field-ui-display-overview-form select, .wysiwyg, .draggable select[name$="[weight]"], .draggable select[name$="[position]"]') //disable chosen on field ui
         .each(function() {
           var name = $(this).attr('name');
-          options = {};
-          options.disable_search = Drupal.settings.chosen.disable_search;
-          options.disable_search_threshold = settings.chosen.disable_search_threshold;
-          options.search_contains = settings.chosen.search_contains;
-          options.placeholder_text_multiple = settings.chosen.placeholder_text_multiple;
-          options.placeholder_text_single = settings.chosen.placeholder_text_single;
-          options.no_results_text = settings.chosen.no_results_text;
-          options.inherit_select_classes = true;
+          options = getElementOptions(this);
 
           minOptions = minOptionsSingle;
           if (multiple[name] !== false) {
@@ -37,18 +40,13 @@
           }
 
           if ($(this).find('option').size() >= minOptions || minOptions == 'Always Apply') {
-            options = $.extend(options, {
-              width: (($(this).width() < minWidth) ? minWidth : $(this).width()) + 'px'
-            });
             $(this).chosen(options);
           }
       });
 
       // Enable chosen for widgets.
       $('select.chosen-widget', context).each(function() {
-        options = $.extend(options, {
-          width: (($(this).width() < minWidth) ? minWidth : $(this).width()) + 'px'
-        });
+        options = getElementOptions(this);
         $(this).chosen(options);
       });
     }
diff --git a/chosen.module b/chosen.module
index d3d4d5c..a9f412c 100644
--- a/chosen.module
+++ b/chosen.module
@@ -129,6 +129,16 @@ function chosen_library() {
     $info['chosen']['css'] = array($library_path . '/chosen.css' => array());
   }
 
+  $options = array(
+    'disable_search' => (bool) variable_get('chosen_disable_search', FALSE),
+    'disable_search_threshold' => variable_get('chosen_disable_search_threshold', 0),
+    'search_contains' => (bool) variable_get('chosen_search_contains', FALSE),
+    'placeholder_text_multiple' => variable_get('chosen_placeholder_text_multiple', t('Choose some options')),
+    'placeholder_text_single' => variable_get('chosen_placeholder_text_single', t('Choose an option')),
+    'no_results_text' => variable_get('chosen_no_results_text', t('No results match')),
+    'width' => variable_get('chosen_minimum_width', 200),
+  );
+
   $module_path = drupal_get_path('module', 'chosen');
   $info['drupal.chosen'] = array(
     'title' => 'Drupal Chosen integration',
@@ -146,12 +156,7 @@ function chosen_library() {
             'minimum_single' => variable_get('chosen_minimum_single', 20),
             'minimum_multiple' => variable_get('chosen_minimum_multiple', 20),
             'minimum_width' => variable_get('chosen_minimum_width', 200),
-            'search_contains' => (variable_get('chosen_search_contains', FALSE)) ? TRUE : FALSE,
-            'disable_search' => (variable_get('chosen_disable_search', FALSE)) ? TRUE : FALSE,
-            'disable_search_threshold' => variable_get('chosen_disable_search_threshold', 0),
-            'placeholder_text_multiple' => variable_get('chosen_placeholder_text_multiple', t('Choose some options')),
-            'placeholder_text_single' => variable_get('chosen_placeholder_text_single', t('Choose an option')),
-            'no_results_text' => variable_get('chosen_no_results_text', t('No results match')),
+            'options' => $options,
           ),
         ),
         'type' => 'setting',
