diff --git a/language/en-GB/en-GB.plg_vmshipment_rules_shipping.ini b/language/en-GB/en-GB.plg_vmshipment_rules_shipping.ini
index ee5381b1597d193dc3999ab9d4e5fb04f3649bb9..d18c37c4fc1216de8c2ca7abb24f02ce0252360c 100755
--- a/language/en-GB/en-GB.plg_vmshipment_rules_shipping.ini
+++ b/language/en-GB/en-GB.plg_vmshipment_rules_shipping.ini
@@ -10,11 +10,11 @@ VMSHIPMENT_RULES_ADV_DESC=""
 VMSHIPMENT_RULES_PLUGIN="<b>Shipment based on general rules (weight, products, amount) per country-zones</b>"
 VMSHIPMENT_RULES_PLUGIN_ADV="<b>Shipment based on general rules (weight, products, amount) per country-zones, including arithmetic expression</b>"
 
-VMSHIPMENT_RULES_HELP="<div style='background: #DDDDDD; padding:5px; margin:3px;'><h2>Overview of the Rules Syntax</h2><ul><li>Each line contains one rule consisting of several <b>conditions and assignments in arbitrary order and separated by semicolons</b>. </li><li>The <b>first matching rule is used</b> to calculate the shipping costs. If its shipping cost is set to <tt>NoShipping</tt>, then this method will not offer any shipping at all.</li><li>All rule parts with <b>comparison operators (&lt;, &lt;=, =&lt;, ==, !=, &lt;&gt;, &gt;=, =&gt;, &gt;)</b> are conditions.</li><li> Supported <b>variables (case-insensitive)</b>: <b><tt>Amount</tt></b>, <b><tt>Weight</tt></b>, <b><tt>ZIP</tt></b>, <b><tt>Products</tt></b> (number of different products), <b><tt>Articles</tt></b> (counted with quantity), <b><tt>Volume</tt></b> (total volume of the order) and <b><tt>MinVolume</tt>, <tt>MinLength</tt>, <tt>MinWidth</tt>, <tt>MinHeight</tt></b> as well as the same variables with <tt>Max</tt> instead of <tt>Min</tt>.</li><li>A condition can consist of multiple chained comparisons.</li><li>All rule parts of the form <b><tt>[VARIABLE]=VALUE</tt> are assignments</b>, with <tt>[VARIABLE]</tt> being one of <b><tt>Name</tt></b> (optional name of the rule, displayed in the cart and invoice), <b><tt>Shipping</tt></b> (shipping cost without tax if the rule matches) and <b><tt>ShippingWithTax</tt></b> (shipping cost including taxes if the rule matches). The <tt>Shipping=</tt> can be left out (<tt>ShippingWithTax=</tt> can not be left out). I.e. a rule part consisting only of a numerical value is understood as net shipping cost without tax.</li></ul><p>EXAMPLE: A rule named &quot;Europe&quot; that sets shipping costs of 4.50 for order amounts from 50 to less than 100, and free shipping from 100€ on would be:</p><blockquote><tt>Name=Europe; 50&lt;=Amount&lt;100; Shipping=4.50<br>Name=Free Shipping; 100&lt;= Amount; 0</tt></blockquote>><p>See also the the <a href='http://www.kainhofer.com/component/content/article/22-virtuemart-2-extensions/45-vm2-shipping-by-rules.html'>Plugin's documentation</a> and <a href='http://www.kainhofer.com/component/content/article.html?id=46'>Rules Examples</a>.</p></div>"
-VMSHIPMENT_RULES_HELP_ADV="<div style='background: #DDDDDD; padding: 5px; margin: 3px;'><h2>Overview of the Rules Syntax</h2><ul><li>Each line contains one rule consisting of several <strong>conditions and assignments in arbitrary order and separated by semicolons</strong>.</li><li>The <strong>first matching rule is used</strong> to calculate the shipping costs. If its shipping cost is set to <tt>NoShipping</tt>, then this method will not offer any shipping at all.</li><li>All rule parts with <strong>comparison operators (&lt;, &lt;=, =&lt;, ==, !=, &lt;&gt;, &gt;=, =&gt;, &gt;)</strong> are conditions.</li><li>Supported <strong>variables (case-insensitive)</strong>: <strong><tt>Amount</tt></strong>, <strong><tt>Weight</tt></strong>, <strong><tt>ZIP</tt></strong>, <strong><tt>Products</tt></strong> (number of different products), <strong><tt>Articles</tt></strong> (counted with quantity), <strong><tt>Volume</tt></strong> (total volume of the order) and <strong><tt>MinVolume</tt>, <tt>MinLength</tt>, <tt>MinWidth</tt>, <tt>MinHeight</tt></strong> as well as the same variables with <tt>Max</tt> instead of <tt>Min</tt>.</li><li>A condition can consist of multiple chained comparisons. In the advanced version, the OR operator is available.</li><li>All rule parts of the form <strong><tt>[VARIABLE]=VALUE</tt> are assignments</strong>; allowed variables are <strong><tt>Name</tt></strong> (of the rule), <strong><tt>Shipping</tt></strong> and <strong><tt>ShippingWithTax</tt></strong>. The '<tt>Shipping='</tt> can be left out.</li><li>In the advanced version, all expressions may contain <strong>arbitrary basic arithmetic expressions (+, -, *, /, %, ^ and parentheses)</strong> of the above variables and functions like max(..), min(..), round(..), ceil(..), floor(..), day(), month(), etc..</li><li><strong>Alphanumeric postal codes</strong> are supported by the variables <tt>UK_Outward, UK_Area, UK_District, UK_Subdistrict, Canada_FSA, Canada_Area, Canada_Urban, Canada_Subarea, ZIP1, ZIP2, ZIP3, ZIP4, ZIP5</tt> and <tt>ZIP6</tt> in the advanced version.</li></ul><p>EXAMPLE: A rule named 'Europe' that sets shipping costs of 5€ plus 1.50€ per article for order amounts from 50 to less than 100, and free shipping from 100€ on would be:</p><blockquote><tt>Name=Europe; 50&lt;=Amount&lt;100; Shipping=5+1.50*Articles<br />Name=Free Shipping; 100&lt;= Amount; 0</tt></blockquote><p>See also the the <a href='http://www.kainhofer.com/component/content/article/22-virtuemart-2-extensions/45-vm2-shipping-by-rules.html'>Plugin's documentation</a> and <a href='http://www.kainhofer.com/component/content/article.html?id=46'>Rules Examples</a>.</p></div>"
+VMSHIPMENT_RULES_HELP="<div style='background: #F8F8F8; padding:5px; margin:3px; border: 3px dashed #DDDDDD;'><h2>Overview of the Rules Syntax</h2><ul><li>Each line contains one rule consisting of several <b>conditions and assignments in arbitrary order and separated by semicolons</b>. </li><li>The <b>first matching rule is used</b> to calculate the shipping costs. If its shipping cost is set to <tt>NoShipping</tt>, then this method will not offer any shipping at all.</li><li>All rule parts with <b>comparison operators (&lt;, &lt;=, =&lt;, ==, !=, &lt;&gt;, &gt;=, =&gt;, &gt;)</b> are conditions.</li><li> Supported <b>variables (case-insensitive)</b>: <b><tt>Amount</tt></b>, <b><tt>Weight</tt></b>, <b><tt>ZIP</tt></b>, <b><tt>Products</tt></b> (number of different products), <b><tt>Articles</tt></b> (counted with quantity), <b><tt>Volume</tt></b> (total volume of the order) and <b><tt>MinVolume</tt>, <tt>MinLength</tt>, <tt>MinWidth</tt>, <tt>MinHeight</tt></b> as well as the same variables with <tt>Max</tt> instead of <tt>Min</tt>.</li><li>A condition can consist of multiple chained comparisons.</li><li>All rule parts of the form <b><tt>[VARIABLE]=VALUE</tt> are assignments</b>, with <tt>[VARIABLE]</tt> being one of <b><tt>Name</tt></b> (optional name of the rule, displayed in the cart and invoice), <b><tt>Shipping</tt></b> (shipping cost without tax if the rule matches) and <b><tt>ShippingWithTax</tt></b> (shipping cost including taxes if the rule matches). The <tt>Shipping=</tt> can be left out (<tt>ShippingWithTax=</tt> can not be left out). I.e. a rule part consisting only of a numerical value is understood as net shipping cost without tax.</li></ul><p>EXAMPLE: A rule named &quot;Europe&quot; that sets shipping costs of 4.50 for order amounts from 50 to less than 100, and free shipping from 100€ on would be:</p><blockquote><tt>Name=Free Shipping; 100&lt;=Amount; 0<br>Name=Europe; 50&lt;=Amount&lt;100; Shipping=4.50</tt></blockquote><p>See also the the <a href='http://open-tools.net/documentation/shipping-by-rules-plugins-for-virtuemart.html'>Plugin's documentation</a> and <a href='http://open-tools.net/component/content/article.html?id=46'>Rules Examples</a>.</p></div>"
+VMSHIPMENT_RULES_HELP_ADV="<div style='background: #EEEEEE; padding: 5px; margin: 3px; border: 2px dashed #DDDDDD;'><h2>Overview of the Rules Syntax</h2><ul><li>Each line contains one rule consisting of several <strong>conditions and assignments in arbitrary order and separated by semicolons</strong>.</li><li>The <strong>first matching rule is used</strong> to calculate the shipping costs. If its shipping cost is set to <tt>NoShipping</tt>, then this method will not offer any shipping at all.</li><li>All rule parts with <strong>comparison operators (&lt;, &lt;=, =&lt;, ==, !=, &lt;&gt;, &gt;=, =&gt;, &gt;)</strong> are conditions.</li><li>Supported <strong>variables (case-insensitive)</strong>: <strong><tt>Amount</tt></strong>, <strong><tt>Weight</tt></strong>, <strong><tt>ZIP</tt></strong>, <strong><tt>Products</tt></strong> (number of different products), <strong><tt>Articles</tt></strong> (counted with quantity), <strong><tt>Volume</tt></strong> (total volume of the order) and <strong><tt>MinVolume</tt>, <tt>MinLength</tt>, <tt>MinWidth</tt>, <tt>MinHeight</tt></strong> as well as the same variables with <tt>Max</tt> instead of <tt>Min</tt>.</li><li>A condition can consist of multiple chained comparisons. In the advanced version, the OR operator is available.</li><li>All rule parts of the form <strong><tt>[VARIABLE]=VALUE</tt> are assignments</strong>; allowed variables are <strong><tt>Name</tt></strong> (of the rule), <strong><tt>Shipping</tt></strong> and <strong><tt>ShippingWithTax</tt></strong>. The '<tt>Shipping='</tt> can be left out.</li><li>In the advanced version, all expressions may contain <strong>arbitrary basic arithmetic expressions (+, -, *, /, %, ^ and parentheses)</strong> of the above variables and functions like max(..), min(..), round(..), ceil(..), floor(..), day(), month(), etc..</li><li><strong>Alphanumeric postal codes</strong> are supported by the variables <tt>UK_Outward, UK_Area, UK_District, UK_Subdistrict, Canada_FSA, Canada_Area, Canada_Urban, Canada_Subarea, ZIP1, ZIP2, ZIP3, ZIP4, ZIP5</tt> and <tt>ZIP6</tt> in the advanced version.</li></ul><p>EXAMPLE: A rule named 'Europe' that sets shipping costs of 5€ plus 1.50€ per article for order amounts from 50 to less than 100, and free shipping from 100€ on would be:</p><blockquote><tt>Name=Free Shipping; 100&lt;= Amount; 0<br/>Name=Europe; 50&lt;=Amount&lt;100; Shipping=5+1.50*Articles</tt></blockquote><p>See also the the <a href='http://open-tools.net/documentation/shipping-by-rules-plugins-for-virtuemart.html'>Plugin's documentation</a> and <a href='http://open-tools.net/component/content/article.html?id=46'>Rules Examples</a>.</p></div>"
 
 VMSHIPMENT_RULES_LOGOS="Logo"
-VMSHIPMENT_RULES_LOGOS_DESC="Select the logo that is displayed to the user for this shipping method."
+VMSHIPMENT_RULES_LOGOS_DESC="Select the logo to be displayed for this shipping method."
 VMSHIPMENT_RULES_WEIGHT_UNIT="Weight Unit"
 VMSHIPMENT_RULES_WEIGHT_UNIT_DESC="The Weight Unit in which the Weight is given"
 VMSHIPMENT_RULES_LENGTH_UNIT="Length Unit"
diff --git a/rules_shipping.script.php b/rules_shipping.script.php
index d6fc0b8b48c55689d52c60d3fb83d82772740762..d19e47166935b0e33acf16d9e7fe4b916fe0fe08 100644
--- a/rules_shipping.script.php
+++ b/rules_shipping.script.php
@@ -79,7 +79,7 @@ class plgVmShipmentRules_ShippingInstallerScript
     {
         // Remove plugin table
         $db =& JFactory::getDBO();
-        $db->setQuery('DROP TABLE `#__virtuemart_shipment_plg_rules_shipping`;');
+        $db->setQuery('DROP TABLE IF EXISTS `#__virtuemart_shipment_plg_rules_shipping`;');
         $db->query();
     }
 }
\ No newline at end of file
diff --git a/rules_shipping.xml b/rules_shipping.xml
index 9f534a97a35c6cc1c689445e1425ca72ee96ca00..8277fb68409d396bb6b596147c3faef43f1b7b73 100644
--- a/rules_shipping.xml
+++ b/rules_shipping.xml
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="UTF-8" ?>
-<install version="1.5" type="plugin" group="vmshipment" method="upgrade">
+<extension version="1.5" type="plugin" group="vmshipment" method="upgrade">
     <name>VMSHIPMENT_RULES</name>
     <creationDate>2014-01-15</creationDate>
     <author>Reinhold Kainhofer</author>
@@ -9,75 +9,142 @@
     <version>4.2</version>
     <description>VMSHIPMENT_RULES_DESC</description>
     <files>
-	<filename plugin="rules_shipping">rules_shipping.php</filename>
-	<filename>rules_shipping_base.php</filename>
-	<folder>language</folder>
-	<folder>elements</folder>
+        <filename plugin="rules_shipping">rules_shipping.php</filename>
+        <filename>rules_shipping_base.php</filename>
+        <folder>language</folder>
+        <folder>elements</folder>
+        <folder>fields</folder>
     </files>
     <languages folder="language">
-	<language tag="en-GB">en-GB/en-GB.plg_vmshipment_rules_shipping.ini</language>
-	<language tag="en-GB">en-GB/en-GB.plg_vmshipment_rules_shipping.sys.ini</language>
+        <language tag="en-GB">en-GB/en-GB.plg_vmshipment_rules_shipping.ini</language>
+        <language tag="en-GB">en-GB/en-GB.plg_vmshipment_rules_shipping.sys.ini</language>
     </languages>
     <scriptfile>rules_shipping.script.php</scriptfile>
 
+    <!-- VM 3.x support (fields rather than params): -->
+    <vmconfig>
+        <fields name="params" addfieldpath="/plugins/vmshipment/rules_shipping/fields">
+            <fieldset name="shipment" label="VMSHIPMENT_RULES_PLUGIN" addfieldpath="/administrator/components/com_virtuemart/fields">
+                <field type="vmcurl"/>
+                <field type="spacer" default="VMSHIPMENT_RULES_PLUGIN" level="level1"/>
+                <field name="shipment_logos" type="imagelist" label="VMSHIPMENT_RULES_LOGOS"
+                    description="VMSHIPMENT_RULES_LOGOS_DESC" multiple="true"
+                    directory="/images/stories/virtuemart/shipment"
+                    default="" hide_default="1" hide_none="1"
+                    stripext="0"   exclude="^_" />
+                <field name="weight_unit" type="vmweightunit" size="10" default="" label="VMSHIPMENT_RULES_WEIGHT_UNIT" description="VMSHIPMENT_RULES_WEIGHT_UNIT_DESC"/>
+                <field name="length_unit" type="vmlengthunit" size="10" default="" label="VMSHIPMENT_RULES_LENGTH_UNIT" description="VMSHIPMENT_RULES_LENGTH_UNIT_DESC"/>
+                <field type="vmtitle" default="" description='VMSHIPMENT_RULES_HELP' />
+            </fieldset>
 
+            <fieldset name="countryzone1" label="VMSHIPMENT_RULES_COUNTRIES1_LABEL">
+                <field name="countries1" type="vmcountries" multiple="true" scope="com_virtuemart" default="" label="VMSHIPMENT_RULES_COUNTRIES" description="VMSHIPMENT_RULES_COUNTRIES_DESC"/>
+                <field name="tax_id1" type="vmtaxes" scope="com_virtuemart"  label="VMSHIPMENT_RULES_TAX" description="VMSHIPMENT_RULES_TAX_DESC" />
+                <field name="rules1" type="textarea" rows="6" cols="80"  label="VMSHIPMENT_RULES_RULES" description="VMSHIPMENT_RULES_RULES_DESC" />
+            </fieldset>
 
+            <fieldset name="countryzone2" label="VMSHIPMENT_RULES_COUNTRIES2_LABEL">
+                <field name="countries2" type="vmcountries" multiple="true" scope="com_virtuemart" default="" label="VMSHIPMENT_RULES_COUNTRIES" description="VMSHIPMENT_RULES_COUNTRIES_DESC"/>
+                <field name="tax_id2" type="vmtaxes" scope="com_virtuemart"  label="VMSHIPMENT_RULES_TAX" description="VMSHIPMENT_RULES_TAX_DESC" />
+                <field name="rules2" type="textarea" rows="6" cols="80"  label="VMSHIPMENT_RULES_RULES" description="VMSHIPMENT_RULES_RULES_DESC" />
+            </fieldset>
+
+            <fieldset name="countryzone3" label="VMSHIPMENT_RULES_COUNTRIES3_LABEL">
+                <field name="countries3" type="vmcountries" multiple="true" scope="com_virtuemart" default="" label="VMSHIPMENT_RULES_COUNTRIES" description="VMSHIPMENT_RULES_COUNTRIES_DESC"/>
+                <field name="tax_id3" type="vmtaxes" scope="com_virtuemart"  label="VMSHIPMENT_RULES_TAX" description="VMSHIPMENT_RULES_TAX_DESC" />
+                <field name="rules3" type="textarea" rows="6" cols="80"  label="VMSHIPMENT_RULES_RULES" description="VMSHIPMENT_RULES_RULES_DESC" />
+            </fieldset>
+
+            <fieldset name="countryzone4" label="VMSHIPMENT_RULES_COUNTRIES4_LABEL">
+                <field name="countries4" type="vmcountries" multiple="true" scope="com_virtuemart" default="" label="VMSHIPMENT_RULES_COUNTRIES" description="VMSHIPMENT_RULES_COUNTRIES_DESC"/>
+                <field name="tax_id4" type="vmtaxes" scope="com_virtuemart"  label="VMSHIPMENT_RULES_TAX" description="VMSHIPMENT_RULES_TAX_DESC" />
+                <field name="rules4" type="textarea" rows="6" cols="80"  label="VMSHIPMENT_RULES_RULES" description="VMSHIPMENT_RULES_RULES_DESC" />
+            </fieldset>
+
+            <fieldset name="countryzone5" label="VMSHIPMENT_RULES_COUNTRIES5_LABEL">
+                <field name="countries5" type="vmcountries" multiple="true" scope="com_virtuemart" default="" label="VMSHIPMENT_RULES_COUNTRIES" description="VMSHIPMENT_RULES_COUNTRIES_DESC"/>
+                <field name="tax_id5" type="vmtaxes" scope="com_virtuemart"  label="VMSHIPMENT_RULES_TAX" description="VMSHIPMENT_RULES_TAX_DESC" />
+                <field name="rules5" type="textarea" rows="6" cols="80"  label="VMSHIPMENT_RULES_RULES" description="VMSHIPMENT_RULES_RULES_DESC" />
+            </fieldset>
+
+            <fieldset name="countryzone6" label="VMSHIPMENT_RULES_COUNTRIES6_LABEL">
+                <field name="countries6" type="vmcountries" multiple="true" scope="com_virtuemart" default="" label="VMSHIPMENT_RULES_COUNTRIES" description="VMSHIPMENT_RULES_COUNTRIES_DESC"/>
+                <field name="tax_id6" type="vmtaxes" scope="com_virtuemart"  label="VMSHIPMENT_RULES_TAX" description="VMSHIPMENT_RULES_TAX_DESC" />
+                <field name="rules6" type="textarea" rows="6" cols="80"  label="VMSHIPMENT_RULES_RULES" description="VMSHIPMENT_RULES_RULES_DESC" />
+            </fieldset>
+
+            <fieldset name="countryzone7" label="VMSHIPMENT_RULES_COUNTRIES7_LABEL">
+                <field name="countries7" type="vmcountries" multiple="true" scope="com_virtuemart" default="" label="VMSHIPMENT_RULES_COUNTRIES" description="VMSHIPMENT_RULES_COUNTRIES_DESC"/>
+                <field name="tax_id7" type="vmtaxes" scope="com_virtuemart"  label="VMSHIPMENT_RULES_TAX" description="VMSHIPMENT_RULES_TAX_DESC" />
+                <field name="rules7" type="textarea" rows="6" cols="80"  label="VMSHIPMENT_RULES_RULES" description="VMSHIPMENT_RULES_RULES_DESC" />
+            </fieldset>
+
+            <fieldset name="countryzone8" label="VMSHIPMENT_RULES_COUNTRIES8_LABEL">
+                <field name="countries8" type="vmcountries" multiple="true" scope="com_virtuemart" default="" label="VMSHIPMENT_RULES_COUNTRIES" description="VMSHIPMENT_RULES_COUNTRIES_DESC"/>
+                <field name="tax_id8" type="vmtaxes" scope="com_virtuemart"  label="VMSHIPMENT_RULES_TAX" description="VMSHIPMENT_RULES_TAX_DESC" />
+                <field name="rules8" type="textarea" rows="6" cols="80"  label="VMSHIPMENT_RULES_RULES" description="VMSHIPMENT_RULES_RULES_DESC" />
+            </fieldset>
+
+        </fields>
+    </vmconfig>
+
+
+    <!-- VM 2.0 support (params rather than fields): -->
     <params addpath="/administrator/components/com_virtuemart/elements" />
-    <params addpath="/plugins/vmshipment/rules_shipping/rules_shipping/elements" />
     <params addpath="/plugins/vmshipment/rules_shipping/elements" />
 
     <params>
-	<param type="vmjpluginwarning" />
-	<param type="spacer" default='VMSHIPMENT_RULES_PLUGIN' level="level1" />
-	<param	name="shipment_logos" type="vmfiles" label="VMSHIPMENT_RULES_LOGOS"
-             	description="VMSHIPMENT_RULES_LOGOS_DESC"
-             	directory="/images/stories/virtuemart/shipment"
-             	default="default" hide_default="1" hide_none="1"
-             	stripext="0"   exclude="^_" />
-	<param name="weight_unit" type="vmweightunit" size="10" default="" label="VMSHIPMENT_RULES_WEIGHT_UNIT" description="VMSHIPMENT_RULES_WEIGHT_UNIT_DESC"/>
-	<param name="length_unit" type="vmlengthunit" size="10" default="" label="VMSHIPMENT_RULES_LENGTH_UNIT" description="VMSHIPMENT_RULES_LENGTH_UNIT_DESC"/>
-
-	<param type="rklabel" default='VMSHIPMENT_RULES_HELP' />
-
-	<param type="rklabel" default='VMSHIPMENT_RULES_COUNTRIES1_LABEL' />
-	<param name="countries1" type="vmcountries"  scope="com_virtuemart" default="" label="VMSHIPMENT_RULES_COUNTRIES" description="VMSHIPMENT_RULES_COUNTRIES_DESC"/>
-	<param name="tax_id1" type="vmtaxes" scope="com_virtuemart"  label="VMSHIPMENT_RULES_TAX" description="VMSHIPMENT_RULES_TAX_DESC" />
-	<param name="rules1" type="textarea" rows="6" cols="80"  label="VMSHIPMENT_RULES_RULES" description="VMSHIPMENT_RULES_RULES_DESC" />
-
-	<param type="rklabel" default="VMSHIPMENT_RULES_COUNTRIES2_LABEL" />
-	<param name="countries2" type="vmcountries"  scope="com_virtuemart" default="" label="VMSHIPMENT_RULES_COUNTRIES" description="VMSHIPMENT_RULES_COUNTRIES_DESC"/>
-	<param name="tax_id2" type="vmtaxes" scope="com_virtuemart"  label="VMSHIPMENT_RULES_TAX" description="VMSHIPMENT_RULES_TAX_DESC" />
-	<param name="rules2" type="textarea" rows="6" cols="80"  label="VMSHIPMENT_RULES_RULES" description="VMSHIPMENT_RULES_RULES_DESC" />
-
-	<param type="rklabel" default="VMSHIPMENT_RULES_COUNTRIES3_LABEL" />
-	<param name="countries3" type="vmcountries"  scope="com_virtuemart" default="" label="VMSHIPMENT_RULES_COUNTRIES" description="VMSHIPMENT_RULES_COUNTRIES_DESC"/>
-	<param name="tax_id3" type="vmtaxes" scope="com_virtuemart"  label="VMSHIPMENT_RULES_TAX" description="VMSHIPMENT_RULES_TAX_DESC" />
-	<param name="rules3" type="textarea" rows="6" cols="80"  label="VMSHIPMENT_RULES_RULES" description="VMSHIPMENT_RULES_RULES_DESC" />
-
-	<param type="rklabel" default="VMSHIPMENT_RULES_COUNTRIES4_LABEL" />
-	<param name="countries4" type="vmcountries"  scope="com_virtuemart" default="" label="VMSHIPMENT_RULES_COUNTRIES" description="VMSHIPMENT_RULES_COUNTRIES_DESC"/>
-	<param name="tax_id4" type="vmtaxes" scope="com_virtuemart"  label="VMSHIPMENT_RULES_TAX" description="VMSHIPMENT_RULES_TAX_DESC" />
-	<param name="rules4" type="textarea" rows="6" cols="80"  label="VMSHIPMENT_RULES_RULES" description="VMSHIPMENT_RULES_RULES_DESC" />
-
-	<param type="rklabel" default="VMSHIPMENT_RULES_COUNTRIES5_LABEL" />
-	<param name="countries5" type="vmcountries"  scope="com_virtuemart" default="" label="VMSHIPMENT_RULES_COUNTRIES" description="VMSHIPMENT_RULES_COUNTRIES_DESC"/>
-	<param name="tax_id5" type="vmtaxes" scope="com_virtuemart"  label="VMSHIPMENT_RULES_TAX" description="VMSHIPMENT_RULES_TAX_DESC" />
-	<param name="rules5" type="textarea" rows="6" cols="80"  label="VMSHIPMENT_RULES_RULES" description="VMSHIPMENT_RULES_RULES_DESC" />
-
-	<param type="rklabel" default="VMSHIPMENT_RULES_COUNTRIES6_LABEL" />
-	<param name="countries6" type="vmcountries"  scope="com_virtuemart" default="" label="VMSHIPMENT_RULES_COUNTRIES" description="VMSHIPMENT_RULES_COUNTRIES_DESC"/>
-	<param name="tax_id6" type="vmtaxes" scope="com_virtuemart"  label="VMSHIPMENT_RULES_TAX" description="VMSHIPMENT_RULES_TAX_DESC" />
-	<param name="rules6" type="textarea" rows="6" cols="80"  label="VMSHIPMENT_RULES_RULES" description="VMSHIPMENT_RULES_RULES_DESC" />
-
-	<param type="rklabel" default="VMSHIPMENT_RULES_COUNTRIES7_LABEL" />
-	<param name="countries7" type="vmcountries"  scope="com_virtuemart" default="" label="VMSHIPMENT_RULES_COUNTRIES" description="VMSHIPMENT_RULES_COUNTRIES_DESC"/>
-	<param name="tax_id7" type="vmtaxes" scope="com_virtuemart"  label="VMSHIPMENT_RULES_TAX" description="VMSHIPMENT_RULES_TAX_DESC" />
-	<param name="rules7" type="textarea" rows="6" cols="80"  label="VMSHIPMENT_RULES_RULES" description="VMSHIPMENT_RULES_RULES_DESC" />
-
-	<param type="rklabel" default="VMSHIPMENT_RULES_COUNTRIES8_LABEL" />
-	<param name="countries8" type="vmcountries"  scope="com_virtuemart" default="" label="VMSHIPMENT_RULES_COUNTRIES" description="VMSHIPMENT_RULES_COUNTRIES_DESC"/>
-	<param name="tax_id8" type="vmtaxes" scope="com_virtuemart"  label="VMSHIPMENT_RULES_TAX" description="VMSHIPMENT_RULES_TAX_DESC" />
-	<param name="rules8" type="textarea" rows="6" cols="80"  label="VMSHIPMENT_RULES_RULES" description="VMSHIPMENT_RULES_RULES_DESC" />
+        <param type="vmjpluginwarning" />
+        <param type="spacer" default='VMSHIPMENT_RULES_PLUGIN' level="level1" />
+        <param name="shipment_logos" type="vmfiles" label="VMSHIPMENT_RULES_LOGOS"
+               description="VMSHIPMENT_RULES_LOGOS_DESC"
+               directory="/images/stories/virtuemart/shipment"
+               default="default" hide_default="1" hide_none="1"
+               stripext="0"   exclude="^_" />
+        <param name="weight_unit" type="vmweightunit" size="10" default="" label="VMSHIPMENT_RULES_WEIGHT_UNIT" description="VMSHIPMENT_RULES_WEIGHT_UNIT_DESC"/>
+        <param name="length_unit" type="vmlengthunit" size="10" default="" label="VMSHIPMENT_RULES_LENGTH_UNIT" description="VMSHIPMENT_RULES_LENGTH_UNIT_DESC"/>
+
+        <param type="rklabel" default='VMSHIPMENT_RULES_HELP' />
+
+        <param type="rklabel" default='VMSHIPMENT_RULES_COUNTRIES1_LABEL' />
+        <param name="countries1" type="vmcountries"  scope="com_virtuemart" default="" label="VMSHIPMENT_RULES_COUNTRIES" description="VMSHIPMENT_RULES_COUNTRIES_DESC"/>
+        <param name="tax_id1" type="vmtaxes" scope="com_virtuemart"  label="VMSHIPMENT_RULES_TAX" description="VMSHIPMENT_RULES_TAX_DESC" />
+        <param name="rules1" type="textarea" rows="6" cols="80"  label="VMSHIPMENT_RULES_RULES" description="VMSHIPMENT_RULES_RULES_DESC" />
+
+        <param type="rklabel" default="VMSHIPMENT_RULES_COUNTRIES2_LABEL" />
+        <param name="countries2" type="vmcountries"  scope="com_virtuemart" default="" label="VMSHIPMENT_RULES_COUNTRIES" description="VMSHIPMENT_RULES_COUNTRIES_DESC"/>
+        <param name="tax_id2" type="vmtaxes" scope="com_virtuemart"  label="VMSHIPMENT_RULES_TAX" description="VMSHIPMENT_RULES_TAX_DESC" />
+        <param name="rules2" type="textarea" rows="6" cols="80"  label="VMSHIPMENT_RULES_RULES" description="VMSHIPMENT_RULES_RULES_DESC" />
+
+        <param type="rklabel" default="VMSHIPMENT_RULES_COUNTRIES3_LABEL" />
+        <param name="countries3" type="vmcountries"  scope="com_virtuemart" default="" label="VMSHIPMENT_RULES_COUNTRIES" description="VMSHIPMENT_RULES_COUNTRIES_DESC"/>
+        <param name="tax_id3" type="vmtaxes" scope="com_virtuemart"  label="VMSHIPMENT_RULES_TAX" description="VMSHIPMENT_RULES_TAX_DESC" />
+        <param name="rules3" type="textarea" rows="6" cols="80"  label="VMSHIPMENT_RULES_RULES" description="VMSHIPMENT_RULES_RULES_DESC" />
+
+        <param type="rklabel" default="VMSHIPMENT_RULES_COUNTRIES4_LABEL" />
+        <param name="countries4" type="vmcountries"  scope="com_virtuemart" default="" label="VMSHIPMENT_RULES_COUNTRIES" description="VMSHIPMENT_RULES_COUNTRIES_DESC"/>
+        <param name="tax_id4" type="vmtaxes" scope="com_virtuemart"  label="VMSHIPMENT_RULES_TAX" description="VMSHIPMENT_RULES_TAX_DESC" />
+        <param name="rules4" type="textarea" rows="6" cols="80"  label="VMSHIPMENT_RULES_RULES" description="VMSHIPMENT_RULES_RULES_DESC" />
+
+        <param type="rklabel" default="VMSHIPMENT_RULES_COUNTRIES5_LABEL" />
+        <param name="countries5" type="vmcountries"  scope="com_virtuemart" default="" label="VMSHIPMENT_RULES_COUNTRIES" description="VMSHIPMENT_RULES_COUNTRIES_DESC"/>
+        <param name="tax_id5" type="vmtaxes" scope="com_virtuemart"  label="VMSHIPMENT_RULES_TAX" description="VMSHIPMENT_RULES_TAX_DESC" />
+        <param name="rules5" type="textarea" rows="6" cols="80"  label="VMSHIPMENT_RULES_RULES" description="VMSHIPMENT_RULES_RULES_DESC" />
+
+        <param type="rklabel" default="VMSHIPMENT_RULES_COUNTRIES6_LABEL" />
+        <param name="countries6" type="vmcountries"  scope="com_virtuemart" default="" label="VMSHIPMENT_RULES_COUNTRIES" description="VMSHIPMENT_RULES_COUNTRIES_DESC"/>
+        <param name="tax_id6" type="vmtaxes" scope="com_virtuemart"  label="VMSHIPMENT_RULES_TAX" description="VMSHIPMENT_RULES_TAX_DESC" />
+        <param name="rules6" type="textarea" rows="6" cols="80"  label="VMSHIPMENT_RULES_RULES" description="VMSHIPMENT_RULES_RULES_DESC" />
+
+        <param type="rklabel" default="VMSHIPMENT_RULES_COUNTRIES7_LABEL" />
+        <param name="countries7" type="vmcountries"  scope="com_virtuemart" default="" label="VMSHIPMENT_RULES_COUNTRIES" description="VMSHIPMENT_RULES_COUNTRIES_DESC"/>
+        <param name="tax_id7" type="vmtaxes" scope="com_virtuemart"  label="VMSHIPMENT_RULES_TAX" description="VMSHIPMENT_RULES_TAX_DESC" />
+        <param name="rules7" type="textarea" rows="6" cols="80"  label="VMSHIPMENT_RULES_RULES" description="VMSHIPMENT_RULES_RULES_DESC" />
+
+        <param type="rklabel" default="VMSHIPMENT_RULES_COUNTRIES8_LABEL" />
+        <param name="countries8" type="vmcountries"  scope="com_virtuemart" default="" label="VMSHIPMENT_RULES_COUNTRIES" description="VMSHIPMENT_RULES_COUNTRIES_DESC"/>
+        <param name="tax_id8" type="vmtaxes" scope="com_virtuemart"  label="VMSHIPMENT_RULES_TAX" description="VMSHIPMENT_RULES_TAX_DESC" />
+        <param name="rules8" type="textarea" rows="6" cols="80"  label="VMSHIPMENT_RULES_RULES" description="VMSHIPMENT_RULES_RULES_DESC" />
   </params>
 
-</install>
+</extension>
diff --git a/rules_shipping_advanced.php b/rules_shipping_advanced.php
index f4e18fbb265121385334164129e967d27731964c..f01285f11049cc938d2d68d79e6c7ff3f5e8ce77 100644
--- a/rules_shipping_advanced.php
+++ b/rules_shipping_advanced.php
@@ -409,7 +409,7 @@ class ShippingRule_Advanced extends ShippingRule {
 			$this->shipping = $res;
 			$this->includes_tax = False;
 		}
-// 		JFactory::getApplication()->enqueueMessage("<pre>Rule part '$rulepart' parsed into: ".print_r($res,1)."</pre>", 'error');
+// 		JFactory::getApplication()->enqueueMessage("<pre>Rule part '$rulepart' parsed into (condition=".print_r($is_condition,1).", assignment=".print_r($is_assignment,1)."): ".print_r($res,1)."</pre>", 'error');
 	}
 
 
diff --git a/rules_shipping_advanced.script.php b/rules_shipping_advanced.script.php
index bc02d809b04a703b74677a31723810e99a41de76..9148256b5b93bb3b2b04ccd1e2361a8daa7449c2 100644
--- a/rules_shipping_advanced.script.php
+++ b/rules_shipping_advanced.script.php
@@ -79,7 +79,7 @@ class plgVmShipmentRules_Shipping_AdvancedInstallerScript
     {
         // Remove plugin table
         $db =& JFactory::getDBO();
-        $db->setQuery('DROP TABLE `#__virtuemart_shipment_plg_rules_shipping_advanced`;');
+        $db->setQuery('DROP TABLE IF EXISTS `#__virtuemart_shipment_plg_rules_shipping_advanced`;');
         $db->query();
     }
 }
\ No newline at end of file
diff --git a/rules_shipping_advanced.xml b/rules_shipping_advanced.xml
index 8a4a1f202146895bf9fe23ecff04561b050cf1b1..07d91567a8d865f2bd4914e1a64296025118fc46 100644
--- a/rules_shipping_advanced.xml
+++ b/rules_shipping_advanced.xml
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="UTF-8" ?>
-<install version="1.5" type="plugin" group="vmshipment" method="upgrade">
+<extension version="1.5" type="plugin" group="vmshipment" method="upgrade">
     <name>VMSHIPMENT_RULES_ADV</name>
     <creationDate>2014-01-15</creationDate>
     <author>Reinhold Kainhofer</author>
@@ -9,74 +9,142 @@
     <version>4.2</version>
     <description>VMSHIPMENT_RULES_ADV_DESC</description>
     <files>
-	<filename plugin="rules_shipping_advanced">rules_shipping_advanced.php</filename>
-	<filename>rules_shipping_base.php</filename>
-	<folder>language</folder>
-	<folder>elements</folder>
+        <filename plugin="rules_shipping_advanced">rules_shipping_advanced.php</filename>
+        <filename>rules_shipping_base.php</filename>
+        <folder>language</folder>
+        <folder>elements</folder>
+        <folder>fields</folder>
     </files>
     <languages folder="language">
-	<language tag="en-GB">en-GB/en-GB.plg_vmshipment_rules_shipping_advanced.ini</language>
-	<language tag="en-GB">en-GB/en-GB.plg_vmshipment_rules_shipping_advanced.sys.ini</language>
+        <language tag="en-GB">en-GB/en-GB.plg_vmshipment_rules_shipping_advanced.ini</language>
+        <language tag="en-GB">en-GB/en-GB.plg_vmshipment_rules_shipping_advanced.sys.ini</language>
     </languages>
     <scriptfile>rules_shipping_advanced.script.php</scriptfile>
 
+    <!-- VM 3.0 support (fields rather than params): -->
+    <vmconfig>
+        <fields name="params" addfieldpath="/plugins/vmshipment/rules_shipping/fields">
+            <fieldset name="shipment" label="VMSHIPMENT_RULES_PLUGIN_ADV" addfieldpath="/administrator/components/com_virtuemart/fields">
+                <field type="vmcurl"/>
+                <field type="spacer" default="VMSHIPMENT_RULES_PLUGIN_ADV" level="level1"/>
+                <field name="shipment_logos" type="imagelist" label="VMSHIPMENT_RULES_LOGOS"
+                    description="VMSHIPMENT_RULES_LOGOS_DESC" multiple="true"
+                    directory="/images/stories/virtuemart/shipment"
+                    default="" hide_default="1" hide_none="1"
+                    stripext="0"   exclude="^_" />
+                <field name="weight_unit" type="vmweightunit" size="10" default="" label="VMSHIPMENT_RULES_WEIGHT_UNIT" description="VMSHIPMENT_RULES_WEIGHT_UNIT_DESC"/>
+                <field name="length_unit" type="vmlengthunit" size="10" default="" label="VMSHIPMENT_RULES_LENGTH_UNIT" description="VMSHIPMENT_RULES_LENGTH_UNIT_DESC"/>
+                <field type="vmtitle" default="" description='VMSHIPMENT_RULES_HELP_ADV' />
+            </fieldset>
 
+            <fieldset name="countryzone1" label="VMSHIPMENT_RULES_COUNTRIES1_LABEL">
+                <field name="countries1" type="vmcountries" multiple="true" scope="com_virtuemart" default="" label="VMSHIPMENT_RULES_COUNTRIES" description="VMSHIPMENT_RULES_COUNTRIES_DESC"/>
+                <field name="tax_id1" type="vmtaxes" scope="com_virtuemart"  label="VMSHIPMENT_RULES_TAX" description="VMSHIPMENT_RULES_TAX_DESC" />
+                <field name="rules1" type="textarea" rows="6" cols="80"  label="VMSHIPMENT_RULES_RULES" description="VMSHIPMENT_RULES_RULES_DESC" />
+            </fieldset>
+
+            <fieldset name="countryzone2" label="VMSHIPMENT_RULES_COUNTRIES2_LABEL">
+                <field name="countries2" type="vmcountries" multiple="true" scope="com_virtuemart" default="" label="VMSHIPMENT_RULES_COUNTRIES" description="VMSHIPMENT_RULES_COUNTRIES_DESC"/>
+                <field name="tax_id2" type="vmtaxes" scope="com_virtuemart"  label="VMSHIPMENT_RULES_TAX" description="VMSHIPMENT_RULES_TAX_DESC" />
+                <field name="rules2" type="textarea" rows="6" cols="80"  label="VMSHIPMENT_RULES_RULES" description="VMSHIPMENT_RULES_RULES_DESC" />
+            </fieldset>
+
+            <fieldset name="countryzone3" label="VMSHIPMENT_RULES_COUNTRIES3_LABEL">
+                <field name="countries3" type="vmcountries" multiple="true" scope="com_virtuemart" default="" label="VMSHIPMENT_RULES_COUNTRIES" description="VMSHIPMENT_RULES_COUNTRIES_DESC"/>
+                <field name="tax_id3" type="vmtaxes" scope="com_virtuemart"  label="VMSHIPMENT_RULES_TAX" description="VMSHIPMENT_RULES_TAX_DESC" />
+                <field name="rules3" type="textarea" rows="6" cols="80"  label="VMSHIPMENT_RULES_RULES" description="VMSHIPMENT_RULES_RULES_DESC" />
+            </fieldset>
+
+            <fieldset name="countryzone4" label="VMSHIPMENT_RULES_COUNTRIES4_LABEL">
+                <field name="countries4" type="vmcountries" multiple="true" scope="com_virtuemart" default="" label="VMSHIPMENT_RULES_COUNTRIES" description="VMSHIPMENT_RULES_COUNTRIES_DESC"/>
+                <field name="tax_id4" type="vmtaxes" scope="com_virtuemart"  label="VMSHIPMENT_RULES_TAX" description="VMSHIPMENT_RULES_TAX_DESC" />
+                <field name="rules4" type="textarea" rows="6" cols="80"  label="VMSHIPMENT_RULES_RULES" description="VMSHIPMENT_RULES_RULES_DESC" />
+            </fieldset>
+
+            <fieldset name="countryzone5" label="VMSHIPMENT_RULES_COUNTRIES5_LABEL">
+                <field name="countries5" type="vmcountries" multiple="true" scope="com_virtuemart" default="" label="VMSHIPMENT_RULES_COUNTRIES" description="VMSHIPMENT_RULES_COUNTRIES_DESC"/>
+                <field name="tax_id5" type="vmtaxes" scope="com_virtuemart"  label="VMSHIPMENT_RULES_TAX" description="VMSHIPMENT_RULES_TAX_DESC" />
+                <field name="rules5" type="textarea" rows="6" cols="80"  label="VMSHIPMENT_RULES_RULES" description="VMSHIPMENT_RULES_RULES_DESC" />
+            </fieldset>
+
+            <fieldset name="countryzone6" label="VMSHIPMENT_RULES_COUNTRIES6_LABEL">
+                <field name="countries6" type="vmcountries" multiple="true" scope="com_virtuemart" default="" label="VMSHIPMENT_RULES_COUNTRIES" description="VMSHIPMENT_RULES_COUNTRIES_DESC"/>
+                <field name="tax_id6" type="vmtaxes" scope="com_virtuemart"  label="VMSHIPMENT_RULES_TAX" description="VMSHIPMENT_RULES_TAX_DESC" />
+                <field name="rules6" type="textarea" rows="6" cols="80"  label="VMSHIPMENT_RULES_RULES" description="VMSHIPMENT_RULES_RULES_DESC" />
+            </fieldset>
+
+            <fieldset name="countryzone7" label="VMSHIPMENT_RULES_COUNTRIES7_LABEL">
+                <field name="countries7" type="vmcountries" multiple="true" scope="com_virtuemart" default="" label="VMSHIPMENT_RULES_COUNTRIES" description="VMSHIPMENT_RULES_COUNTRIES_DESC"/>
+                <field name="tax_id7" type="vmtaxes" scope="com_virtuemart"  label="VMSHIPMENT_RULES_TAX" description="VMSHIPMENT_RULES_TAX_DESC" />
+                <field name="rules7" type="textarea" rows="6" cols="80"  label="VMSHIPMENT_RULES_RULES" description="VMSHIPMENT_RULES_RULES_DESC" />
+            </fieldset>
+
+            <fieldset name="countryzone8" label="VMSHIPMENT_RULES_COUNTRIES8_LABEL">
+                <field name="countries8" type="vmcountries" multiple="true" scope="com_virtuemart" default="" label="VMSHIPMENT_RULES_COUNTRIES" description="VMSHIPMENT_RULES_COUNTRIES_DESC"/>
+                <field name="tax_id8" type="vmtaxes" scope="com_virtuemart"  label="VMSHIPMENT_RULES_TAX" description="VMSHIPMENT_RULES_TAX_DESC" />
+                <field name="rules8" type="textarea" rows="6" cols="80"  label="VMSHIPMENT_RULES_RULES" description="VMSHIPMENT_RULES_RULES_DESC" />
+            </fieldset>
+
+        </fields>
+    </vmconfig>
+
+
+    <!-- VM 2.0 support (params rather than fields): -->
     <params addpath="/administrator/components/com_virtuemart/elements" />
-    <params addpath="/plugins/vmshipment/rules_shipping_advanced/rules_shipping_advanced/elements" />
     <params addpath="/plugins/vmshipment/rules_shipping_advanced/elements" />
 
     <params>
-	<param type="vmjpluginwarning" />
-	<param type="rklabel" default='VMSHIPMENT_RULES_PLUGIN_ADV' level="level1" />
-	<param	name="shipment_logos" type="vmfiles" label="VMSHIPMENT_RULES_LOGOS"
-             	description="VMSHIPMENT_RULES_LOGOS_DESC"
-             	directory="/images/stories/virtuemart/shipment"
-             	default="default" hide_default="1" hide_none="1"
-             	stripext="0"   exclude="^_" />
-	<param name="weight_unit" type="vmweightunit" size="10" default="" label="VMSHIPMENT_RULES_WEIGHT_UNIT" description="VMSHIPMENT_RULES_WEIGHT_UNIT_DESC"/>
-	<param name="length_unit" type="vmlengthunit" size="10" default="" label="VMSHIPMENT_RULES_LENGTH_UNIT" description="VMSHIPMENT_RULES_LENGTH_UNIT_DESC"/>
-
-	<param type="rklabel" default='VMSHIPMENT_RULES_HELP_ADV' />
-
-	<param type="rklabel" default='VMSHIPMENT_RULES_COUNTRIES1_LABEL' />
-	<param name="countries1" type="vmcountries"  scope="com_virtuemart" default="" label="VMSHIPMENT_RULES_COUNTRIES" description="VMSHIPMENT_RULES_COUNTRIES_DESC"/>
-	<param name="tax_id1" type="vmtaxes" scope="com_virtuemart"  label="VMSHIPMENT_RULES_TAX" description="VMSHIPMENT_RULES_TAX_DESC" />
-	<param name="rules1" type="textarea" rows="6" cols="80"  label="VMSHIPMENT_RULES_RULES" description="VMSHIPMENT_RULES_RULES_DESC" />
-
-	<param type="rklabel" default="VMSHIPMENT_RULES_COUNTRIES2_LABEL" />
-	<param name="countries2" type="vmcountries"  scope="com_virtuemart" default="" label="VMSHIPMENT_RULES_COUNTRIES" description="VMSHIPMENT_RULES_COUNTRIES_DESC"/>
-	<param name="tax_id2" type="vmtaxes" scope="com_virtuemart"  label="VMSHIPMENT_RULES_TAX" description="VMSHIPMENT_RULES_TAX_DESC" />
-	<param name="rules2" type="textarea" rows="6" cols="80"  label="VMSHIPMENT_RULES_RULES" description="VMSHIPMENT_RULES_RULES_DESC" />
-
-	<param type="rklabel" default="VMSHIPMENT_RULES_COUNTRIES3_LABEL" />
-	<param name="countries3" type="vmcountries"  scope="com_virtuemart" default="" label="VMSHIPMENT_RULES_COUNTRIES" description="VMSHIPMENT_RULES_COUNTRIES_DESC"/>
-	<param name="tax_id3" type="vmtaxes" scope="com_virtuemart"  label="VMSHIPMENT_RULES_TAX" description="VMSHIPMENT_RULES_TAX_DESC" />
-	<param name="rules3" type="textarea" rows="6" cols="80"  label="VMSHIPMENT_RULES_RULES" description="VMSHIPMENT_RULES_RULES_DESC" />
-
-	<param type="rklabel" default="VMSHIPMENT_RULES_COUNTRIES4_LABEL" />
-	<param name="countries4" type="vmcountries"  scope="com_virtuemart" default="" label="VMSHIPMENT_RULES_COUNTRIES" description="VMSHIPMENT_RULES_COUNTRIES_DESC"/>
-	<param name="tax_id4" type="vmtaxes" scope="com_virtuemart"  label="VMSHIPMENT_RULES_TAX" description="VMSHIPMENT_RULES_TAX_DESC" />
-	<param name="rules4" type="textarea" rows="6" cols="80"  label="VMSHIPMENT_RULES_RULES" description="VMSHIPMENT_RULES_RULES_DESC" />
-
-	<param type="rklabel" default="VMSHIPMENT_RULES_COUNTRIES5_LABEL" />
-	<param name="countries5" type="vmcountries"  scope="com_virtuemart" default="" label="VMSHIPMENT_RULES_COUNTRIES" description="VMSHIPMENT_RULES_COUNTRIES_DESC"/>
-	<param name="tax_id5" type="vmtaxes" scope="com_virtuemart"  label="VMSHIPMENT_RULES_TAX" description="VMSHIPMENT_RULES_TAX_DESC" />
-	<param name="rules5" type="textarea" rows="6" cols="80"  label="VMSHIPMENT_RULES_RULES" description="VMSHIPMENT_RULES_RULES_DESC" />
-
-	<param type="rklabel" default="VMSHIPMENT_RULES_COUNTRIES6_LABEL" />
-	<param name="countries6" type="vmcountries"  scope="com_virtuemart" default="" label="VMSHIPMENT_RULES_COUNTRIES" description="VMSHIPMENT_RULES_COUNTRIES_DESC"/>
-	<param name="tax_id6" type="vmtaxes" scope="com_virtuemart"  label="VMSHIPMENT_RULES_TAX" description="VMSHIPMENT_RULES_TAX_DESC" />
-	<param name="rules6" type="textarea" rows="6" cols="80"  label="VMSHIPMENT_RULES_RULES" description="VMSHIPMENT_RULES_RULES_DESC" />
-
-	<param type="rklabel" default="VMSHIPMENT_RULES_COUNTRIES7_LABEL" />
-	<param name="countries7" type="vmcountries"  scope="com_virtuemart" default="" label="VMSHIPMENT_RULES_COUNTRIES" description="VMSHIPMENT_RULES_COUNTRIES_DESC"/>
-	<param name="tax_id7" type="vmtaxes" scope="com_virtuemart"  label="VMSHIPMENT_RULES_TAX" description="VMSHIPMENT_RULES_TAX_DESC" />
-	<param name="rules7" type="textarea" rows="6" cols="80"  label="VMSHIPMENT_RULES_RULES" description="VMSHIPMENT_RULES_RULES_DESC" />
-
-	<param type="rklabel" default="VMSHIPMENT_RULES_COUNTRIES8_LABEL" />
-	<param name="countries8" type="vmcountries"  scope="com_virtuemart" default="" label="VMSHIPMENT_RULES_COUNTRIES" description="VMSHIPMENT_RULES_COUNTRIES_DESC"/>
-	<param name="tax_id8" type="vmtaxes" scope="com_virtuemart"  label="VMSHIPMENT_RULES_TAX" description="VMSHIPMENT_RULES_TAX_DESC" />
-	<param name="rules8" type="textarea" rows="6" cols="80"  label="VMSHIPMENT_RULES_RULES" description="VMSHIPMENT_RULES_RULES_DESC" />
+        <param type="vmjpluginwarning" />
+        <param type="rklabel" default='VMSHIPMENT_RULES_PLUGIN_ADV' level="level1" />
+        <param name="shipment_logos" type="vmfiles" label="VMSHIPMENT_RULES_LOGOS"
+               description="VMSHIPMENT_RULES_LOGOS_DESC"
+               directory="/images/stories/virtuemart/shipment"
+               default="default" hide_default="1" hide_none="1"
+               stripext="0"   exclude="^_" />
+        <param name="weight_unit" type="vmweightunit" size="10" default="" label="VMSHIPMENT_RULES_WEIGHT_UNIT" description="VMSHIPMENT_RULES_WEIGHT_UNIT_DESC"/>
+        <param name="length_unit" type="vmlengthunit" size="10" default="" label="VMSHIPMENT_RULES_LENGTH_UNIT" description="VMSHIPMENT_RULES_LENGTH_UNIT_DESC"/>
+
+        <param type="rklabel" default='VMSHIPMENT_RULES_HELP_ADV' />
+
+        <param type="rklabel" default='VMSHIPMENT_RULES_COUNTRIES1_LABEL' />
+        <param name="countries1" type="vmcountries"  scope="com_virtuemart" default="" label="VMSHIPMENT_RULES_COUNTRIES" description="VMSHIPMENT_RULES_COUNTRIES_DESC"/>
+        <param name="tax_id1" type="vmtaxes" scope="com_virtuemart"  label="VMSHIPMENT_RULES_TAX" description="VMSHIPMENT_RULES_TAX_DESC" />
+        <param name="rules1" type="textarea" rows="6" cols="80"  label="VMSHIPMENT_RULES_RULES" description="VMSHIPMENT_RULES_RULES_DESC" />
+
+        <param type="rklabel" default="VMSHIPMENT_RULES_COUNTRIES2_LABEL" />
+        <param name="countries2" type="vmcountries"  scope="com_virtuemart" default="" label="VMSHIPMENT_RULES_COUNTRIES" description="VMSHIPMENT_RULES_COUNTRIES_DESC"/>
+        <param name="tax_id2" type="vmtaxes" scope="com_virtuemart"  label="VMSHIPMENT_RULES_TAX" description="VMSHIPMENT_RULES_TAX_DESC" />
+        <param name="rules2" type="textarea" rows="6" cols="80"  label="VMSHIPMENT_RULES_RULES" description="VMSHIPMENT_RULES_RULES_DESC" />
+
+        <param type="rklabel" default="VMSHIPMENT_RULES_COUNTRIES3_LABEL" />
+        <param name="countries3" type="vmcountries"  scope="com_virtuemart" default="" label="VMSHIPMENT_RULES_COUNTRIES" description="VMSHIPMENT_RULES_COUNTRIES_DESC"/>
+        <param name="tax_id3" type="vmtaxes" scope="com_virtuemart"  label="VMSHIPMENT_RULES_TAX" description="VMSHIPMENT_RULES_TAX_DESC" />
+        <param name="rules3" type="textarea" rows="6" cols="80"  label="VMSHIPMENT_RULES_RULES" description="VMSHIPMENT_RULES_RULES_DESC" />
+
+        <param type="rklabel" default="VMSHIPMENT_RULES_COUNTRIES4_LABEL" />
+        <param name="countries4" type="vmcountries"  scope="com_virtuemart" default="" label="VMSHIPMENT_RULES_COUNTRIES" description="VMSHIPMENT_RULES_COUNTRIES_DESC"/>
+        <param name="tax_id4" type="vmtaxes" scope="com_virtuemart"  label="VMSHIPMENT_RULES_TAX" description="VMSHIPMENT_RULES_TAX_DESC" />
+        <param name="rules4" type="textarea" rows="6" cols="80"  label="VMSHIPMENT_RULES_RULES" description="VMSHIPMENT_RULES_RULES_DESC" />
+
+        <param type="rklabel" default="VMSHIPMENT_RULES_COUNTRIES5_LABEL" />
+        <param name="countries5" type="vmcountries"  scope="com_virtuemart" default="" label="VMSHIPMENT_RULES_COUNTRIES" description="VMSHIPMENT_RULES_COUNTRIES_DESC"/>
+        <param name="tax_id5" type="vmtaxes" scope="com_virtuemart"  label="VMSHIPMENT_RULES_TAX" description="VMSHIPMENT_RULES_TAX_DESC" />
+        <param name="rules5" type="textarea" rows="6" cols="80"  label="VMSHIPMENT_RULES_RULES" description="VMSHIPMENT_RULES_RULES_DESC" />
+
+        <param type="rklabel" default="VMSHIPMENT_RULES_COUNTRIES6_LABEL" />
+        <param name="countries6" type="vmcountries"  scope="com_virtuemart" default="" label="VMSHIPMENT_RULES_COUNTRIES" description="VMSHIPMENT_RULES_COUNTRIES_DESC"/>
+        <param name="tax_id6" type="vmtaxes" scope="com_virtuemart"  label="VMSHIPMENT_RULES_TAX" description="VMSHIPMENT_RULES_TAX_DESC" />
+        <param name="rules6" type="textarea" rows="6" cols="80"  label="VMSHIPMENT_RULES_RULES" description="VMSHIPMENT_RULES_RULES_DESC" />
+
+        <param type="rklabel" default="VMSHIPMENT_RULES_COUNTRIES7_LABEL" />
+        <param name="countries7" type="vmcountries"  scope="com_virtuemart" default="" label="VMSHIPMENT_RULES_COUNTRIES" description="VMSHIPMENT_RULES_COUNTRIES_DESC"/>
+        <param name="tax_id7" type="vmtaxes" scope="com_virtuemart"  label="VMSHIPMENT_RULES_TAX" description="VMSHIPMENT_RULES_TAX_DESC" />
+        <param name="rules7" type="textarea" rows="6" cols="80"  label="VMSHIPMENT_RULES_RULES" description="VMSHIPMENT_RULES_RULES_DESC" />
+
+        <param type="rklabel" default="VMSHIPMENT_RULES_COUNTRIES8_LABEL" />
+        <param name="countries8" type="vmcountries"  scope="com_virtuemart" default="" label="VMSHIPMENT_RULES_COUNTRIES" description="VMSHIPMENT_RULES_COUNTRIES_DESC"/>
+        <param name="tax_id8" type="vmtaxes" scope="com_virtuemart"  label="VMSHIPMENT_RULES_TAX" description="VMSHIPMENT_RULES_TAX_DESC" />
+        <param name="rules8" type="textarea" rows="6" cols="80"  label="VMSHIPMENT_RULES_RULES" description="VMSHIPMENT_RULES_RULES_DESC" />
   </params>
 
-</install>
+</extension>
diff --git a/rules_shipping_base.php b/rules_shipping_base.php
index d750f72b882bf67bacaa006a0d9d8990a479be90..8994c93528f85c4e24980c0a259af6571b2e683e 100644
--- a/rules_shipping_base.php
+++ b/rules_shipping_base.php
@@ -1025,6 +1025,8 @@ class ShippingRule {
 					return $this->evaluateListFunction ($func, $args); break;
 			case "contains_any": 
 			case "contains_all":
+			case "contains_only":
+			case "contains_none":
 					return $this->evaluateListContainmentFunction($func, $args); break;
 		}
 		// No known function matches => print an error, return 0