diff --git a/modules/quantity/commerce_extra_quantity.info b/modules/quantity/commerce_extra_quantity.info
index 9833350..87d7269 100644
--- a/modules/quantity/commerce_extra_quantity.info
+++ b/modules/quantity/commerce_extra_quantity.info
@@ -1,7 +1,10 @@
 name        = Commerce Extra Quantity
-description	= Wraps quantity fields with - and + links to decrease or increase quantity.
-package			= Commerce Extra
+description = Wraps quantity fields with - and + links to decrease or increase quantity.
+package     = Commerce Extra
 core        = 7.x
 
 dependencies[] = commerce_extra
 dependencies[] = commerce_cart
+
+; Views handlers
+files[] = includes/views/handlers/commerce_line_item_handler_field_quantity_plusminus.inc
diff --git a/modules/quantity/commerce_extra_quantity.module b/modules/quantity/commerce_extra_quantity.module
index a07bb43..fa08b4f 100644
--- a/modules/quantity/commerce_extra_quantity.module
+++ b/modules/quantity/commerce_extra_quantity.module
@@ -43,34 +43,31 @@ function commerce_extra_quantity_commerce_extra_configure_submit(&$form, &$form_
  * Adds additional theme wrappers for add to cart's quantity textfields.
  */
 function commerce_extra_quantity_form_alter(&$form, &$form_state, $form_id) {
-
-  // Load quantity cardinality setting
-  $quantity_cardinality = variable_get('commerce_extra_quantity_cardinality', 1);
-
   // Add to cart form from field api
   $str = 'commerce_cart_add_to_cart_form_';
   if (drupal_substr($form_id, 0, drupal_strlen($str)) == $str) {
     if (isset($form['quantity']) && $form['quantity']['#type'] == 'textfield') {
-      $form['#attached']['js'][] = drupal_get_path('module', 'commerce_extra_quantity') . '/commerce_extra_quantity.js';
-      $form['#attached']['css'][] = drupal_get_path('module', 'commerce_extra_quantity') . '/commerce_extra_quantity.css';
-      $form['quantity']['#theme_wrappers'] = array('quantity_plusminus_wrapper', 'form_element');
-      $form['quantity']['#amount'] = $quantity_cardinality;
-      $form['#validate'][] = 'commerce_extra_quantity_validate_cardinality';
-    }
-  }
-
-  // Quantity fields from views
-  if ($form_id == 'views_form_commerce_cart_form_default') {
-    if (isset($form['edit_quantity'])) {
-      $form['#attached']['js'][] = drupal_get_path('module', 'commerce_extra_quantity') . '/commerce_extra_quantity.js';
-      $form['#attached']['css'][] = drupal_get_path('module', 'commerce_extra_quantity') . '/commerce_extra_quantity.css';
-      foreach ($form['edit_quantity'] as $key => $value) {
-        if (is_numeric($key) && drupal_substr($key, 0, 1) != '#' && is_array($value)) {
-          $form['edit_quantity'][$key]['#theme_wrappers'] = array('quantity_plusminus_wrapper', 'form_element');
-          $form['edit_quantity'][$key]['#amount'] = $quantity_cardinality;
+      $quantity_cardinality = NULL;
+      // Use field formatter alter if Field formatter settings module enabled.
+      if (module_exists('field_formatter_settings')) {
+        $field_context = $form_state['context'];
+        $instance = field_info_instance($field_context['entity_type'], $field_context['field'], $field_context['bundle']);
+        $entity = reset(entity_load($field_context['entity_type'], array($field_context['entity_id'])));
+        $field_instance_display = field_get_display($instance, $field_context['view_mode'], $entity);
+        if (!empty($field_instance_display['settings']['quantity_extra_plusminus'])) {
+          $quantity_cardinality = $field_instance_display['settings']['quantity_extra_plusminus_cardinality'];
         }
       }
-      $form['#validate'][] = 'commerce_extra_quantity_validate_cardinality';
+      else {
+        $quantity_cardinality = variable_get('commerce_extra_quantity_cardinality', '1');
+      }
+      if (!empty($quantity_cardinality)) {
+        $form['#attached']['js'][] = drupal_get_path('module', 'commerce_extra_quantity') . '/js/commerce_line_item_quantity_plusminus.js';
+        $form['#attached']['css'][] = drupal_get_path('module', 'commerce_extra_quantity') . '/css/commerce_line_item_quantity_plusminus.css';
+        $form['quantity']['#theme_wrappers'] = array('commerce_line_item_quantity_plusminus_wrapper', 'form_element');
+        $form['quantity']['#amount'] = $quantity_cardinality;
+        $form['#validate'][] = 'commerce_extra_quantity_validate_cardinality';
+      }
     }
   }
 
@@ -104,14 +101,24 @@ function commerce_extra_quantity_validate_cardinality(&$form, &$form_state) {
 }
 
 /**
+ * Implements hook_views_api().
+ */
+function commerce_extra_quantity_views_api() {
+  return array(
+    'api' => 3,
+    'path' => drupal_get_path('module', 'commerce_extra_quantity') . '/includes/views',
+  );
+}
+
+/**
  * Implements hook_theme().
  */
 function commerce_extra_quantity_theme($existing, $type, $theme, $path) {
   return array(
-    'quantity_plusminus_wrapper' => array(
+    'commerce_line_item_quantity_plusminus_wrapper' => array(
       'render element' => 'form',
     ),
-    'quantity_plusminus_link' => array(
+    'commerce_line_item_quantity_plusminus_link' => array(
       'variables' => array('way' => NULL, 'quantity' => NULL, 'quantity_input_element' => NULL),
     ),
   );
@@ -120,27 +127,27 @@ function commerce_extra_quantity_theme($existing, $type, $theme, $path) {
 /**
  * Returns HTML for quantity textfield having links wrapping the textfield.
  */
-function theme_quantity_plusminus_wrapper($variables) {
+function theme_commerce_line_item_quantity_plusminus_wrapper($variables) {
   $amount = isset($variables['form']['#amount']) ? $variables['form']['#amount'] : 1;
-  $decrease = theme('quantity_plusminus_link', array('way' => COMMERCE_EXTRA_QUANTITY_DECREASE, 'quantity' => $variables['form']['#value'], 'quantity_input_element' => $variables['form']['#id'], 'amount' => $amount));
-  $increase = theme('quantity_plusminus_link', array('way' => COMMERCE_EXTRA_QUANTITY_INCREASE, 'quantity' => $variables['form']['#value'], 'quantity_input_element' => $variables['form']['#id'], 'amount' => $amount));
+  $decrease = theme('commerce_line_item_quantity_plusminus_link', array('way' => COMMERCE_EXTRA_QUANTITY_DECREASE, 'quantity' => $variables['form']['#value'], 'quantity_input_element' => $variables['form']['#id'], 'amount' => $amount));
+  $increase = theme('commerce_line_item_quantity_plusminus_link', array('way' => COMMERCE_EXTRA_QUANTITY_INCREASE, 'quantity' => $variables['form']['#value'], 'quantity_input_element' => $variables['form']['#id'], 'amount' => $amount));
   return $decrease . $variables['form']['#children'] . $increase;
 }
 
 /**
  * Returns HTML for link which increases/decreases quantity value.
  */
-function theme_quantity_plusminus_link($variables) {
+function theme_commerce_line_item_quantity_plusminus_link($variables) {
   switch ($variables['way']) {
     case COMMERCE_EXTRA_QUANTITY_DECREASE:
       $text = '-';
       $class = 'commerce-quantity-plusminus-link-decrease';
-      $js_callback = "Drupal.commerce_extra_quantity_quantity('#" . $variables['quantity_input_element'] . "', " . $variables['way'] . ", " . $variables['amount'] . ")";
+      $js_callback = "Drupal.commerce_line_item_quantity_plusminus('#" . $variables['quantity_input_element'] . "', " . $variables['way'] . ", " . $variables['amount'] . ")";
       break;
     case COMMERCE_EXTRA_QUANTITY_INCREASE:
       $text = '+';
       $class = 'commerce-quantity-plusminus-link-increase';
-      $js_callback = "Drupal.commerce_extra_quantity_quantity('#" . $variables['quantity_input_element'] . "', " . $variables['way'] . ", " . $variables['amount'] . ")";
+      $js_callback = "Drupal.commerce_line_item_quantity_plusminus('#" . $variables['quantity_input_element'] . "', " . $variables['way'] . ", " . $variables['amount'] . ")";
       break;
   }
   if ($variables['quantity'] <= 1) {
@@ -160,3 +167,66 @@ function theme_quantity_plusminus_link($variables) {
   );
   return render($element);
 }
+/**
+ * Implementation for hook_field_widget_info_alter.
+ * Add new settings to the quantity formatter.
+ */
+function commerce_extra_quantity_field_formatter_info_alter(&$info) {
+  if (isset($info['date_default'])) {
+    $info['commerce_cart_add_to_cart_form']['settings']['quantity_extra_plusminus'] = FALSE;
+    $info['commerce_cart_add_to_cart_form']['settings']['quantity_extra_plusminus_cardinality'] = NULL;
+  }
+}
+
+/**
+ * Implements hook_field_formatter_settings_summary_alter().
+ */
+function commerce_extra_quantity_field_formatter_settings_summary_alter(&$summary, $context) {
+  $display = $context['instance']['display'][$context['view_mode']];
+  $settings = $display['settings'];
+  if (isset($settings['quantity_extra_plusminus'])) {
+    if (empty($settings['quantity_extra_plusminus'])) {
+      $summary .= '<br />' . t('Commerce Extra') . ': +/- ' . t('not enabled.');
+    }
+    else {
+      $summary .= '<br />' . t('Commerce Extra Quantity') . ': +/- ' . t('enabled.') . ' ' . t('Cardinality') . ': ' . $settings['quantity_extra_plusminus_cardinality'] . '.';
+    }
+  }
+}
+
+/**
+ * Implements hook_field_formatter_settings_form_alter().
+ */
+function commerce_extra_quantity_field_formatter_settings_form_alter(&$settings_form, $context) {
+  $display = $context['instance']['display'][$context['view_mode']];
+  $settings = $display['settings'];
+  if ($display['type'] == 'commerce_cart_add_to_cart_form') {
+    $settings_form['show_quantity']['#weight'] = -100;
+    $settings_form['quantity_extra_plusminus'] = array(
+      '#type' => 'checkbox',
+      '#title' => t('Add +/- buttons to increase/decrease the quantity value.'),
+      '#default_value' => $settings['quantity_extra_plusminus'],
+      '#weight' => -99,
+      '#states' => array(
+        // Hide the settings when the select checkbox is disabled.
+        'invisible' => array(
+         ':input[name="fields[field_product][settings_edit_form][settings][show_quantity]"]' => array('checked' => FALSE),
+        ),
+      ),
+    );
+    $settings_form['quantity_extra_plusminus_cardinality'] = array(
+      '#type' => 'textfield',
+      '#title' => t('Quantity cardinality'),
+      '#dscription' => t('You can change quantity cardinality for quantity widget.'),
+      '#default_value' => $settings['quantity_extra_plusminus_cardinality'],
+      '#weight' => -98,
+      '#size' => 3,
+      '#states' => array(
+        // Hide the settings when the select checkbox is disabled.
+        'invisible' => array(
+         ':input[name="fields[field_product][settings_edit_form][settings][quantity_extra_plusminus]"]' => array('checked' => FALSE),
+        ),
+      ),
+    );
+  }
+}
