diff --git a/apply.orig b/apply.orig
new file mode 100644
index 0000000..e69de29
diff --git a/apply.rej b/apply.rej
new file mode 100644
index 0000000..7870d54
--- /dev/null
+++ b/apply.rej
@@ -0,0 +1,91 @@
+--- commerce_multicurrency.module
++++ commerce_multicurrency.module
+@@ -1,4 +1,5 @@
+ <?php
++
+ /**
+  * @file
+  * Enhancements for the commerce currency support.
+@@ -309,7 +310,7 @@
+       );
+       return
+         '<p>' .  $text_1 . '<ul><li>' . $list_item_1 . '</li><li>' . $list_item_2 . '</li></ul>' .
+-        $text_2 . '</p>';
++          $text_2 . '</p>';
+   }
+ }
+ 
+@@ -402,7 +403,8 @@
+  *   exists.
+  */
+ function commerce_multicurrency_set_user_currency_code($currency_code, $overwrite_cookie = TRUE) {
+-  if ($overwrite_cookie || empty($_COOKIE['Drupal_visitor_commerce_currency'])) {
++  $force_to_use_get = variable_get('commerce_multicurrency_force_get', 0);
++  if ($overwrite_cookie || empty($_COOKIE['Drupal_visitor_commerce_currency']) || ($force_to_use_get && !isset($_GET['currency']))) {
+     $enabled_currencies = commerce_currencies(TRUE);
+     if (isset($enabled_currencies[$currency_code])) {
+       $old_currency_code = commerce_multicurrency_get_user_currency_code();
+@@ -410,9 +412,23 @@
+       // Inject currency into the static cache.
+       $current_currency_code = &drupal_static('commerce_multicurrency_get_user_currency_code', FALSE);
+       $current_currency_code = $currency_code;
+-
+-      // Set cookie.
+-      user_cookie_save(array('commerce_currency' => $currency_code));
++      $default_currency = commerce_default_currency();
++      if ($force_to_use_get) {
++        $current_url = $_GET['q'];
++        if ($currency_code != $default_currency) {
++          $redirect = $current_url . '?currency=' . $currency_code;
++        }
++        else {
++          // Means default currency was selected - lets remove _GET parameter.
++          $redirect = trim(preg_replace('/([?&])currency=[^&]+(&|$)/', '$1', $current_url), '?');
++        }
++        header('Location: /' . $redirect, TRUE, 301);
++        exit();
++      }
++      else {
++        // Set cookie.
++        user_cookie_save(array('commerce_currency' => $currency_code));
++      }
+ 
+       rules_invoke_event('commerce_multicurrency_user_currency_set', $currency_code, $old_currency_code);
+     }
+@@ -430,9 +446,16 @@
+     return $currency_code;
+   }
+ 
+-  // If there's a cookie with a selected currency ensure it's a available one.
+-  if (isset($_COOKIE['Drupal_visitor_commerce_currency'])) {
+-    $enabled_currencies = commerce_currencies(TRUE);
++  $enabled_currencies = commerce_currencies(TRUE);
++  if (variable_get('commerce_multicurrency_force_get', 0)) {
++    if (isset($_GET['currency']) && !empty($enabled_currencies[$_GET['currency']])) {
++      return $_GET['currency'];
++    }
++    else {
++      // Return default currency at the bottom of this function.
++    }
++  }// If there's a cookie with a selected currency ensure it's a available one.
++  elseif (isset($_COOKIE['Drupal_visitor_commerce_currency'])) {
+     if (!empty($enabled_currencies[$_COOKIE['Drupal_visitor_commerce_currency']])) {
+       return $currency_code = $_COOKIE['Drupal_visitor_commerce_currency'];
+     }
+@@ -540,3 +563,16 @@
+     }
+   }
+ }
++
++/**
++ * Implements hook_url_outbound_alter().
++ * @param string $path
++ * @param array $options
++ * @param path $original_path
++ */
++function commerce_multicurrency_url_outbound_alter(&$path, &$options, $original_path) {
++  // If the param of interest is present and the url being generated is internal.
++  if (!empty($_GET['currency']) && !$options['external'] && variable_get('commerce_multicurrency_force_get', 0)) {
++    $options['query']['currency'] = $_GET['currency'];
++  }
++}
diff --git a/commerce_multicurrency-haldle-currency-using-get_1516128-49.patch b/commerce_multicurrency-haldle-currency-using-get_1516128-49.patch
new file mode 100644
index 0000000..81425fd
--- /dev/null
+++ b/commerce_multicurrency-haldle-currency-using-get_1516128-49.patch
@@ -0,0 +1,93 @@
+diff --git a/commerce_multicurrency.module b/commerce_multicurrency.module
+index 3759a0e..66a73bf 100644
+--- a/commerce_multicurrency.module
++++ b/commerce_multicurrency.module
+@@ -1,4 +1,5 @@
+ <?php
++
+ /**
+  * @file
+  * Enhancements for the commerce currency support.
+@@ -309,7 +310,7 @@ function commerce_multicurrency_help($path, $arg) {
+       );
+       return
+         '<p>' .  $text_1 . '<ul><li>' . $list_item_1 . '</li><li>' . $list_item_2 . '</li></ul>' .
+-        $text_2 . '</p>';
++          $text_2 . '</p>';
+   }
+ }
+ 
+@@ -402,7 +403,8 @@ function commerce_multicurrency_set_user_currency_code_callback($currency_code)
+  *   exists.
+  */
+ function commerce_multicurrency_set_user_currency_code($currency_code, $overwrite_cookie = TRUE) {
+-  if ($overwrite_cookie || empty($_COOKIE['Drupal_visitor_commerce_currency'])) {
++  $force_to_use_get = variable_get('commerce_multicurrency_force_get', 0);
++  if ($overwrite_cookie || empty($_COOKIE['Drupal_visitor_commerce_currency']) || ($force_to_use_get && !isset($_GET['currency']))) {
+     $enabled_currencies = commerce_currencies(TRUE);
+     if (isset($enabled_currencies[$currency_code])) {
+       $old_currency_code = commerce_multicurrency_get_user_currency_code();
+@@ -410,9 +412,23 @@ function commerce_multicurrency_set_user_currency_code($currency_code, $overwrit
+       // Inject currency into the static cache.
+       $current_currency_code = &drupal_static('commerce_multicurrency_get_user_currency_code', FALSE);
+       $current_currency_code = $currency_code;
+-
+-      // Set cookie.
+-      user_cookie_save(array('commerce_currency' => $currency_code));
++      $default_currency = commerce_default_currency();
++      if ($force_to_use_get) {
++        $current_url = $_GET['q'];
++        if ($currency_code != $default_currency) {
++          $redirect = $current_url . '?currency=' . $currency_code;
++        }
++        else {
++          // Means default currency was selected - lets remove _GET parameter.
++          $redirect = trim(preg_replace('/([?&])currency=[^&]+(&|$)/', '$1', $current_url), '?');
++        }
++        header('Location: /' . $redirect, TRUE, 301);
++        exit();
++      }
++      else {
++        // Set cookie.
++        user_cookie_save(array('commerce_currency' => $currency_code));
++      }
+ 
+       rules_invoke_event('commerce_multicurrency_user_currency_set', $currency_code, $old_currency_code);
+     }
+@@ -430,9 +446,16 @@ function commerce_multicurrency_get_user_currency_code() {
+     return $currency_code;
+   }
+ 
+-  // If there's a cookie with a selected currency ensure it's a available one.
+-  if (isset($_COOKIE['Drupal_visitor_commerce_currency'])) {
+-    $enabled_currencies = commerce_currencies(TRUE);
++  $enabled_currencies = commerce_currencies(TRUE);
++  if (variable_get('commerce_multicurrency_force_get', 0)) {
++    if (isset($_GET['currency']) && !empty($enabled_currencies[$_GET['currency']])) {
++      return $_GET['currency'];
++    }
++    else {
++      // Return default currency at the bottom of this function.
++    }
++  }// If there's a cookie with a selected currency ensure it's a available one.
++  elseif (isset($_COOKIE['Drupal_visitor_commerce_currency'])) {
+     if (!empty($enabled_currencies[$_COOKIE['Drupal_visitor_commerce_currency']])) {
+       return $currency_code = $_COOKIE['Drupal_visitor_commerce_currency'];
+     }
+@@ -540,3 +563,16 @@ function commerce_multicurrency_commerce_price_field_formatter_prepare_view($ent
+     }
+   }
+ }
++
++/**
++ * Implements hook_url_outbound_alter().
++ * @param string $path
++ * @param array $options
++ * @param path $original_path
++ */
++function commerce_multicurrency_url_outbound_alter(&$path, &$options, $original_path) {
++  // If the param of interest is present and the url being generated is internal.
++  if (!empty($_GET['currency']) && !$options['external'] && variable_get('commerce_multicurrency_force_get', 0)) {
++    $options['query']['currency'] = $_GET['currency'];
++  }
++}
diff --git a/commerce_multicurrency-haldle-currency-using-get_1516128-50.patch b/commerce_multicurrency-haldle-currency-using-get_1516128-50.patch
new file mode 100644
index 0000000..2a99911
--- /dev/null
+++ b/commerce_multicurrency-haldle-currency-using-get_1516128-50.patch
@@ -0,0 +1,95 @@
+diff --git a/commerce_multicurrency.module b/commerce_multicurrency.module
+index 3759a0e..e5cd356 100644
+--- a/commerce_multicurrency.module
++++ b/commerce_multicurrency.module
+@@ -1,4 +1,5 @@
+ <?php
++
+ /**
+  * @file
+  * Enhancements for the commerce currency support.
+@@ -309,7 +310,7 @@ function commerce_multicurrency_help($path, $arg) {
+       );
+       return
+         '<p>' .  $text_1 . '<ul><li>' . $list_item_1 . '</li><li>' . $list_item_2 . '</li></ul>' .
+-        $text_2 . '</p>';
++          $text_2 . '</p>';
+   }
+ }
+ 
+@@ -402,7 +403,8 @@ function commerce_multicurrency_set_user_currency_code_callback($currency_code)
+  *   exists.
+  */
+ function commerce_multicurrency_set_user_currency_code($currency_code, $overwrite_cookie = TRUE) {
+-  if ($overwrite_cookie || empty($_COOKIE['Drupal_visitor_commerce_currency'])) {
++  $force_to_use_get = variable_get('commerce_multicurrency_force_get', 0);
++  if ($overwrite_cookie || empty($_COOKIE['Drupal_visitor_commerce_currency']) || ($force_to_use_get && !isset($_GET['currency']))) {
+     $enabled_currencies = commerce_currencies(TRUE);
+     if (isset($enabled_currencies[$currency_code])) {
+       $old_currency_code = commerce_multicurrency_get_user_currency_code();
+@@ -410,9 +412,23 @@ function commerce_multicurrency_set_user_currency_code($currency_code, $overwrit
+       // Inject currency into the static cache.
+       $current_currency_code = &drupal_static('commerce_multicurrency_get_user_currency_code', FALSE);
+       $current_currency_code = $currency_code;
+-
+-      // Set cookie.
+-      user_cookie_save(array('commerce_currency' => $currency_code));
++      $default_currency = commerce_default_currency();
++      if ($force_to_use_get) {
++        $current_url = $_GET['q'];
++        if ($currency_code != $default_currency) {
++          $redirect = $current_url . '?currency=' . $currency_code;
++        }
++        else {
++          // Means default currency was selected - lets remove _GET parameter.
++          $redirect = trim(preg_replace('/([?&])currency=[^&]+(&|$)/', '$1', $current_url), '?');
++        }
++        header('Location: /' . $redirect, TRUE, 301);
++        exit();
++      }
++      else {
++        // Set cookie.
++        user_cookie_save(array('commerce_currency' => $currency_code));
++      }
+ 
+       rules_invoke_event('commerce_multicurrency_user_currency_set', $currency_code, $old_currency_code);
+     }
+@@ -430,9 +446,16 @@ function commerce_multicurrency_get_user_currency_code() {
+     return $currency_code;
+   }
+ 
+-  // If there's a cookie with a selected currency ensure it's a available one.
+-  if (isset($_COOKIE['Drupal_visitor_commerce_currency'])) {
+-    $enabled_currencies = commerce_currencies(TRUE);
++  $enabled_currencies = commerce_currencies(TRUE);
++  if (variable_get('commerce_multicurrency_force_get', 0)) {
++    if (isset($_GET['currency']) && !empty($enabled_currencies[$_GET['currency']])) {
++      return $_GET['currency'];
++    }
++    else {
++      // Return default currency at the bottom of this function.
++    }
++  }// If there's a cookie with a selected currency ensure it's a available one.
++  elseif (isset($_COOKIE['Drupal_visitor_commerce_currency'])) {
+     if (!empty($enabled_currencies[$_COOKIE['Drupal_visitor_commerce_currency']])) {
+       return $currency_code = $_COOKIE['Drupal_visitor_commerce_currency'];
+     }
+@@ -540,3 +563,18 @@ function commerce_multicurrency_commerce_price_field_formatter_prepare_view($ent
+     }
+   }
+ }
++
++/**
++ * Implements hook_url_outbound_alter().
++ * @param string $path
++ * @param array $options
++ * @param path $original_path
++ */
++function commerce_multicurrency_url_outbound_alter(&$path, &$options, $original_path) {
++  global $user;
++
++  // If the param of interest is present and the url being generated is internal.
++  if ($user->uid == 0 && !empty($_GET['currency']) && !$options['external'] && variable_get('commerce_multicurrency_force_get', 0)) {
++    $options['query']['currency'] = $_GET['currency'];
++  }
++}
diff --git a/commerce_multicurrency.module b/commerce_multicurrency.module
index 3759a0e..3466be9 100644
--- a/commerce_multicurrency.module
+++ b/commerce_multicurrency.module
@@ -1,4 +1,5 @@
 <?php
+
 /**
  * @file
  * Enhancements for the commerce currency support.
@@ -309,7 +310,7 @@ function commerce_multicurrency_help($path, $arg) {
       );
       return
         '<p>' .  $text_1 . '<ul><li>' . $list_item_1 . '</li><li>' . $list_item_2 . '</li></ul>' .
-        $text_2 . '</p>';
+          $text_2 . '</p>';
   }
 }
 
@@ -402,7 +403,9 @@ function commerce_multicurrency_set_user_currency_code_callback($currency_code)
  *   exists.
  */
 function commerce_multicurrency_set_user_currency_code($currency_code, $overwrite_cookie = TRUE) {
-  if ($overwrite_cookie || empty($_COOKIE['Drupal_visitor_commerce_currency'])) {
+  global $language;
+  $force_to_use_get = variable_get('commerce_multicurrency_force_get', 0);
+  if ($overwrite_cookie || empty($_COOKIE['Drupal_visitor_commerce_currency']) || ($force_to_use_get && !isset($_GET['currency']))) {
     $enabled_currencies = commerce_currencies(TRUE);
     if (isset($enabled_currencies[$currency_code])) {
       $old_currency_code = commerce_multicurrency_get_user_currency_code();
@@ -410,9 +413,26 @@ function commerce_multicurrency_set_user_currency_code($currency_code, $overwrit
       // Inject currency into the static cache.
       $current_currency_code = &drupal_static('commerce_multicurrency_get_user_currency_code', FALSE);
       $current_currency_code = $currency_code;
-
-      // Set cookie.
-      user_cookie_save(array('commerce_currency' => $currency_code));
+      $default_currency = commerce_default_currency();
+      if ($force_to_use_get) {
+        $current_url = $_GET['q'];
+        if ($currency_code != $default_currency) {
+          $redirect = $language->prefix.'/'.$current_url . '?currency=' . $currency_code;
+        }
+        else {
+          // Means default currency was selected - lets remove _GET parameter.
+          $redirect = trim(preg_replace('/([?&])currency=[^&]+(&|$)/', '$1', $current_url), '?');
+          if($language->prefix){
+            $redirect = $language->prefix.'/'. $redirect;
+          }
+        }
+        header('Location: /' . $redirect, TRUE, 301);
+        exit();
+      }
+      else {
+        // Set cookie.
+        user_cookie_save(array('commerce_currency' => $currency_code));
+      }
 
       rules_invoke_event('commerce_multicurrency_user_currency_set', $currency_code, $old_currency_code);
     }
@@ -430,9 +450,16 @@ function commerce_multicurrency_get_user_currency_code() {
     return $currency_code;
   }
 
-  // If there's a cookie with a selected currency ensure it's a available one.
-  if (isset($_COOKIE['Drupal_visitor_commerce_currency'])) {
-    $enabled_currencies = commerce_currencies(TRUE);
+  $enabled_currencies = commerce_currencies(TRUE);
+  if (variable_get('commerce_multicurrency_force_get', 0)) {
+    if (isset($_GET['currency']) && !empty($enabled_currencies[$_GET['currency']])) {
+      return $_GET['currency'];
+    }
+    else {
+      // Return default currency at the bottom of this function.
+    }
+  }// If there's a cookie with a selected currency ensure it's a available one.
+  elseif (isset($_COOKIE['Drupal_visitor_commerce_currency'])) {
     if (!empty($enabled_currencies[$_COOKIE['Drupal_visitor_commerce_currency']])) {
       return $currency_code = $_COOKIE['Drupal_visitor_commerce_currency'];
     }
@@ -540,3 +567,18 @@ function commerce_multicurrency_commerce_price_field_formatter_prepare_view($ent
     }
   }
 }
+
+/**
+ * Implements hook_url_outbound_alter().
+ * @param string $path
+ * @param array $options
+ * @param path $original_path
+ */
+function commerce_multicurrency_url_outbound_alter(&$path, &$options, $original_path) {
+  global $user;
+
+  // If the param of interest is present and the url being generated is internal.
+  if ($user->uid == 0 && !empty($_GET['currency']) && !$options['external'] && variable_get('commerce_multicurrency_force_get', 0)) {
+    $options['query']['currency'] = $_GET['currency'];
+  }
+}
