diff --git a/app/code/community/OpenTools/Ordernumber/Block/Counters.php b/app/code/community/OpenTools/Ordernumber/Block/Counters.php
index 3f5e18ec432594acf22d94e871204a28cdead11b..f1fe2b3defc4525a2a4e76e2adec4fc6c656db80 100644
--- a/app/code/community/OpenTools/Ordernumber/Block/Counters.php
+++ b/app/code/community/OpenTools/Ordernumber/Block/Counters.php
@@ -127,7 +127,7 @@ class OpenTools_Ordernumber_Block_Counters extends Mage_Adminhtml_Block_System_C
      * @param array $websiteIds
      * @return array
      */
-    public function _getScoreStructureOptions($isAll = false, $websiteIds = array(),
+    public function _getStoreStructureOptions($isAll = false, $websiteIds = array(),
                                               $groupIds = array(), $storeIds = array()
     ) {
         $sstore = Mage::getSingleton('adminhtml/system_store');
@@ -200,7 +200,7 @@ class OpenTools_Ordernumber_Block_Counters extends Mage_Adminhtml_Block_System_C
 
     protected function _getNumberScopeSelect($name, $disabled=true, $current=null)
     {
-        $options = $this->_getScoreStructureOptions(true);
+        $options = $this->_getStoreStructureOptions(true);
         $html = $this->getLayout()->createBlock('core/html_select')
             ->setName($name)
             ->setClass($this->_getDisabled($disabled))
diff --git a/app/code/community/OpenTools/Ordernumber/Helper/Data.php b/app/code/community/OpenTools/Ordernumber/Helper/Data.php
index b059a830f7505050c84b8c7845bdaa5e10235842..531a9a4c731f17b3dd86ec8b0672a2d30f99dce4 100644
--- a/app/code/community/OpenTools/Ordernumber/Helper/Data.php
+++ b/app/code/community/OpenTools/Ordernumber/Helper/Data.php
@@ -5,81 +5,31 @@ class OpenTools_Ordernumber_Helper_Data extends Mage_Core_Helper_Abstract
 {
 	protected $helper = null;
 	
-    function __construct($label, $item)
+    function logitem($label, $item)
     {
-        $this->helper = OrdernumberHelperMagento::getHelper();
         Mage::Log($label . " " . get_class($item) . "\n", null, 'ordernumber.log');
         Mage::Log(is_array($item)?$item:$item->debug(), null, 'ordernumber.log');
         Mage::Log(get_class_methods(get_class($item)), null, 'ordernumber.log');
-    }
-
-    /* Return a random "string" of the given length taken from the given alphabet */
-    protected function randomString($alphabet, $len)
-    {
-        $alen = strlen($alphabet);
-        $r = "";
-        for ($n=0; $n<$len; $n++) {
-            $r .= $alphabet[mt_rand(0, $alen-1)];
-        }
-        return $r;
-    }
-
-    protected function replaceRandom ($match)
+	}
+    function __construct()
     {
-        /* the regexp matches (random)(Type)(Len) as match, Type and Len is optional */
-        $len = ($match[3]?$match[3]:1);
-        // Fallback: If no Type is given, use Digit
-        $alphabet = "0123456789";
-        // Select the correct alphabet depending on Type
-        switch (strtolower($match[2])) {
-            case "digit":
-                $alphabet = "0123456789";
-                break;
-
-            case "hex":
-                $alphabet = "0123456789abcdef";
-                break;
-
-            case "letter":
-                $alphabet = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ";
-                break;
-
-            case "uletter":
-                $alphabet = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
-                break;
-
-            case "lletter":
-                $alphabet = "abcdefghijklmnopqrstuvwxyz";
-                break;
-
-            case "alphanum":
-                $alphabet = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";
-                break;
-        }
-        return self::randomString ($alphabet, $len);
-    }
+        // Setup the ordernumber helper object and register the required callbacks:
+        $this->helper = OrdernumberHelperMagento::getHelper();
 
-    protected function setupDateTimeReplacements (&$reps, $nrtype)
-    {
-        $utime = microtime(true);
-        $reps["[year]"] = date ("Y", $utime);
-        $reps["[year2]"] = date ("y", $utime);
-        $reps["[month]"] = date("m", $utime);
-        $reps["[day]"] = date("d", $utime);
-        $reps["[hour]"] = date("H", $utime);
-        $reps["[hour12]"] = date("h", $utime);
-        $reps["[ampm]"] = date("a", $utime);
-        $reps["[minute]"] = date("i", $utime);
-        $reps["[second]"] = date("s", $utime);
-        $milliseconds = (int)(1000*($utime - (int)$utime));
-        $millisecondsstring = sprintf('%03d', $milliseconds);
-        $reps["[decisecond]"] = $millisecondsstring[0];
-        $reps["[centisecond]"] = substr($millisecondsstring, 0, 2);
-        $reps["[millisecond]"] = $millisecondsstring;
+		$this->helper->registerCallback('setupStoreReplacements',		array($this, 'setupStoreReplacements'));
+		
+		
+		$this->helper->registerCallback('setupOrderReplacements',		array($this, 'setupOrderReplacements'));
+		$this->helper->registerCallback('setupUserReplacements',		array($this, 'setupUserReplacements'));
+		$this->helper->registerCallback('setupShippingReplacements',	array($this, 'setupShippingReplacements'));
+		$this->helper->registerCallback('setupThirdPartyReplacements',	array($this, 'setupThirdPartyReplacements'));
     }
+    
+    public function getOrdernumberHelper() {
+		return $this->helper;
+	}
 
-    protected function setupAddressReplacements(&$reps, $prefix, $address, $nrtype)
-    {
+    public function setupAddressReplacements(&$reps, $prefix, $address, $nrtype) {
         if (!$address) {
             return;
         }
@@ -103,147 +53,84 @@ class OpenTools_Ordernumber_Helper_Data extends Mage_Core_Helper_Abstract
         $reps["[".$prefix."countryid]"] = $country->getId();
 
     }
-    protected function setupStoreReplacements (&$reps, $order, $nrtype)
-    {
-        $store = $order->getStore();
-        $reps["[storeid]"] = $store->getStoreId();
-        $reps["[storecurrency]"] = $order->getStoreCurrency();
-    }
-    protected function setupOrderReplacements (&$reps, $order, $nrtype)
-    {
-        $shippingAddress = $order->getShippingAddress();
-        $billingAddress = $order->getBillingAddress();
-        if ($shippingAddress) {
-            $address = $shippingAddress;
-        } else {
-            $address = $billingAddress;
-        }
-        /* if ($nrtype == "invoice") {
-            // Invoices use the billing address for un-prefixed fields
-            $address = $billingAddress;
-        } */
-        $reps["[orderid]"] = $order->getId();
-        $reps["[ordernumber]"] = $order->getIncrementId();
-        $reps["[orderstatus]"] = $order->getStatus();
-        $reps["[currency]"] = $order->getOrderCurrency()->getCurrencyCode();
-        $reps["[customerid]"] = $order->getCustomerId();
-        $this->setupAddressReplacements($reps, "", $address, $nrtype);
-        $this->setupAddressReplacements($reps, "shipping", $shippingAddress, $nrtype);
-        $this->setupAddressReplacements($reps, "billing", $billingAddress, $nrtype);
-
-        $reps["[totalitems]"] = $order->getTotalItemCount();
-        $reps["[totalquantity]"] = $order->getTotalQtyOrdered();
+    public function setupStoreReplacements (&$reps, $details, $nrtype) {
+		if (isset($details->order)) {
+			$order = $details->order;
+			$store = $order->getStore();
+			$reps["[storeid]"] = $store->getStoreId();
+			$reps["[storecurrency]"] = $order->getStoreCurrency();
+		}
     }
-    protected function setupShippingReplacements(&$reps, $order, $nrtype)
-    {
-        $reps["[shippingmethod]"] = $order->getShippingMethod();
+    public function setupOrderReplacements (&$reps, $details, $nrtype) {
+		if (isset($details->order)) {
+			$order = $details->order;
+			$shippingAddress = $order->getShippingAddress();
+			$billingAddress = $order->getBillingAddress();
+			if ($shippingAddress) {
+				$address = $shippingAddress;
+			} else {
+				$address = $billingAddress;
+			}
+			/* if ($nrtype == "invoice") {
+				// Invoices use the billing address for un-prefixed fields
+				$address = $billingAddress;
+			} */
+			$reps["[orderid]"] = $order->getId();
+			$reps["[ordernumber]"] = $order->getIncrementId();
+			$reps["[orderstatus]"] = $order->getStatus();
+			$reps["[currency]"] = $order->getOrderCurrency()->getCurrencyCode();
+			$reps["[customerid]"] = $order->getCustomerId();
+			$this->setupAddressReplacements($reps, "", $address, $nrtype);
+			$this->setupAddressReplacements($reps, "shipping", $shippingAddress, 	$nrtype);
+			$this->setupAddressReplacements($reps, "billing", $billingAddress, $nrtype);
+
+			$reps["[totalitems]"] = $order->getTotalItemCount();
+			$reps["[totalquantity]"] = $order->getTotalQtyOrdered();
+        
+			// TODO: Add list variables, like SKUs, shipping classes, categories, manufacturers, etc.
+			/*
+			// List-valued properties for custom variable checks:
+			// TODO: Also implement variable for:
+			//  - Shipping needed
+			//  - Downloads available
+			$lineitems = $order->get_items();
+			$skus = array();
+			$categories = array();
+			$tags = array();
+			$shippingclasses = array();
+			foreach ($lineitems as $l) {
+				$p = $order->get_product_from_item($l);
+				$skus[$p->get_sku()] = 1;
+				foreach (wc_get_product_terms( $p->id, 'product_cat') as $c) {
+					$categories[$c->slug] = 1;
+				}
+				foreach (wc_get_product_terms( $p->id, 'product_tag') as $c) {
+					$tags[$c->slug] = 1;
+				}
+				$shippingclasses[$p->get_shipping_class()] = 1;
+			}
+			$reps["[skus]"] = array_keys($skus);
+			$reps["[categories]"] = array_keys($categories);
+			$reps["[tags]"] = array_keys($tags);
+			$reps["[shippingclasses]"] = array_keys($shippingclasses);
+		*/
+		 }
+		if (isset($details->invoice)) {
+			$invoice = $details->invoice;
+			$reps["[invoiceid]"] = $invoice->getId();
+		}
     }
-
-    protected function setupShipmentReplacements (&$reps, $shipment, $order, $nrtype)
-    {
-        // TODO
-    }
-    protected function setupInvoiceReplacements (&$reps, $invoice, $order, $nrtype)
-    {
-        $reps["[invoiceid]"] = $invoice->getId();
-    }
-    protected function setupCreditMemoReplacements (&$reps, $creditmemo, $order, $nrtype)
-    {
-        // TODO
-    }
-    protected function setupReplacements($nrtype, $info)
-    {
-        $reps = array();
-        $order = $info['order'];
-        $this->setupDateTimeReplacements($reps, $nrtype);
-        $this->setupStoreReplacements($reps, $order, $nrtype);
-        $this->setupOrderReplacements($reps, $order, $nrtype);
-        $this->setupShippingReplacements($reps, $order, $nrtype);
-        if (isset($info['shipment'])) {
-            $this->setupShipmentReplacements($reps, $info['shipment'], $order, $nrtype);
-        }
-        if (isset($info['invoice'])) {
-            $this->setupInvoiceReplacements($reps, $info['invoice'], $order, $nrtype);
-        }
-        if (isset($info['creditmemo'])) {
-            $this->setupCreditMemoReplacements($reps, $info['creditmemo'], $order, $nrtype);
-        }
-// Mage::Log('Replacements at end of setupReplacements(nrtype='.$nrtype.'): '.print_r($reps,1), null, 'ordernumber.log');
-
-        return $reps;
-    }
-
-    protected function applyCustomVariables ($nrtype, $info, $reps, $customvars)
-    {
-        static $listvars = array("groups", "skus");
-// Mage::getSingleton('core/session')->addWarning('<pre>custom variables, conditionvar='.$conditionvar.', reps='.print_r($reps,1).', customvars='.print_r($customvars,1).'</pre>');
-        $order = $info['order'];
-        $customer = $order->getCustomer();
-        $address = $order->getShippingAddress();
-        $store = $order->getStore();
-// $this->logitem("Order: ", $order);
-        foreach ($customvars as $c) {
-            $conditionvar = $c['conditionvar'];
-
-            $found = false;
-            $compareval = null;
-
-            if (!$found && isset($reps[$conditionvar])) {
-                $found = true;
-                $compareval = $reps[$conditionvar];
-            } elseif (isset($reps['['.$conditionvar.']'])) {
-                $found = true;
-                $compareval = $reps['['.$conditionvar.']'];
-            } elseif (in_array($conditionvar, $listvars)) {
-                // TODO: Handle lists
-                $found = true;
-                $compareval = null /* TODO */;
-            } elseif ($order && $compareval = $order->getData($conditionvar)) {
-                // TODO: Handle order property
-                $found = true;
-            } elseif ($customer && $compareval = $customer->getData($conditionvar)) {
-                // TODO: Handle customer property
-                $found = true;
-            } elseif ($address && $compareval = $address->getData($conditionvar)) {
-                // TODO: Handle address property
-                $found = true;
-            } elseif ($store && $compareval = $store->getData($conditionvar)) {
-                // TODO: Handle store property
-                $found = true;
-            } else {
-                // TODO: Handle other possible properties!
-                // TODO: Print out warning that variable could not be found.
-//                 Mage::getSingleton('core/session')->addWarning($this->__('Unable to find variable "%s" used in the ordernumber custom variable definitions.', $conditionvar));
-            }
-            if ($found) {
-                if (is_array($compareval)) {
-                    $match = in_array($c['conditionval'], $compareval);
-                } else {
-                    $match = ($c['conditionval'] == $compareval);
-                }
-            }
-            if ($found && $match) {
-                $varname = '['.strtolower($c['newvar']).']';
-                $reps[$varname] = $c['newval'];
-            }
-// $this->logitem("Reps after $conditionvar: ", $order);
-        }
-        return $reps;
-    }
-
-    protected function doReplacements ($fmt, $reps)
-    {
-        // First, replace all random...[n] fields. This needs to be done with a regexp and a callback:
-        $fmt = preg_replace_callback ('/\[(random)(.*?)([0-9]*?)\]/', array($this, 'replaceRandom'), $fmt);
-        return str_ireplace (array_keys($reps), array_values($reps), $fmt);
-    }
-
-    public function replace_fields ($fmt, $nrtype, $info, $customvars)
-    {
-        $reps = $this->setupReplacements ($nrtype, $info);
-        $reps = $this->applyCustomVariables ($nrtype, $info, $reps, $customvars);
-// $this->logitem("All replacements after custom variables: ", $reps);
-        return $this->doReplacements($fmt, $reps);
+	public function setupUserReplacements (&$reps, $details, $nrtype) {
+		// TODO
+// 		$reps["[ipaddress]"]   = $details->customer_ip_address;
+// 		$reps["[userid]"]      = $details->get_user_id();
+	}
+
+    public function setupShippingReplacements(&$reps, $details, $nrtype) {
+		if (isset($details->order)) {
+			$order = $details->order;
+			$reps["[shippingmethod]"] = $order->getShippingMethod();
+		}
     }
 
 
diff --git a/app/code/community/OpenTools/Ordernumber/Model/Observer.php b/app/code/community/OpenTools/Ordernumber/Model/Observer.php
index 165cb3f83d85e812572fbae3d8c2f4bf2dceaf42..75307353e784f9ee0109fefa02dac4f5fcc252d9 100644
--- a/app/code/community/OpenTools/Ordernumber/Model/Observer.php
+++ b/app/code/community/OpenTools/Ordernumber/Model/Observer.php
@@ -78,6 +78,17 @@ class OpenTools_Ordernumber_Model_Observer extends Mage_Core_Model_Abstract
         $creditmemo = $observer->getEvent()->getCreditmemo();
         return $this->handle_new_number('creditmemo', $creditmemo, $creditmemo->getOrder());
     }
+    
+    protected function getCustomVariables() {
+		$customvars = Mage::getStoreConfig('ordernumber/replacements', $storeId);
+		if (isset($customvars['replacements'])) {
+			$customvars = $customvars['replacements'];
+		}
+		if ($customvars) {
+			$customvars = unserialize($customvars);
+		}
+		return $customvars;
+    }
 
     public function handle_new_number ($nrtype, $object, $order)
     {
@@ -87,90 +98,56 @@ class OpenTools_Ordernumber_Model_Observer extends Mage_Core_Model_Abstract
         $enabled = Mage::getStoreConfig($cfgprefix.'/active', $storeId);
 
         if ($enabled && !$object->getId() && !$object->getOrdernumberProcessed()) {
-            // This trigger might be called twice, so ignore it the second time!
-            $object->setOrdernumberProcessed(true);
 
             $format = Mage::getStoreConfig($cfgprefix.'/format', $storeId);
             $scope = Mage::getStoreConfig($cfgprefix.'/scope', $storeId);
-            $reset = Mage::getStoreConfig($cfgprefix.'/reset', $storeId);
-            $counterfmt = Mage::getStoreConfig($cfgprefix.'/resetformat', $storeId);
-            $digits = Mage::getStoreConfig($cfgprefix.'/digits', $storeId);
-            $increment = Mage::getStoreConfig($cfgprefix.'/increment', $storeId);
-
-            // First, replace all variables:
+            $global = Mage::getStoreConfig($cfgprefix.'/global', $storeId);
+            $customvars = $this->getCustomVariables();
+			$ctrsettings = array(
+				"${nrtype}_format"  => '',
+				"${nrtype}_counter" => '',
+				"${nrtype}_global"  => $global,
+				"${nrtype}_padding" => 1,
+				"${nrtype}_step"    => 1,
+				"${nrtype}_start"   => 1,
+				"${nrtype}_scope"	=> $scope,
+			);
             $helper = Mage::helper('ordernumber');
-            $info = array('order'=>$order, $nrtype=>$object);
-
-            // The ordernumber/...numbers/reset contains some pre-defined counter names as
-            // well as enum values indicating certain behavior. Replace those by the actual
-            // counter names for the current counter:
-            switch ($reset) {
-                case 0:
-                    $format = $format . '|';
-                    break;
-                case 1:
-                    $format = $format . '|' . $format;
-                    break;
-                case -1:
-                    $format = $format . '|' . $counterfmt;
-                    break;
-                default:
-                    /* Pre-defined counter formats saved in the /reset config field */
-                    $counterfmt = $format . '|' . $reset;
-                    break;
-            }
-            $customvars = Mage::getStoreConfig('ordernumber/replacements', $storeId);
-            if (isset($customvars['replacements'])) {
-                $customvars = $customvars['replacements'];
-            }
-            if ($customvars) {
-                $customvars = unserialize($customvars);
-            }
-// Mage::Log('customvars: '.print_r($customvars,1), null, 'ordernumber.log');
-
-            // Now apply the replacements
-            $nr = $helper->replace_fields ($format, $nrtype, $info, $customvars);
-
-            // Split at a | to get the number format and a possibly different counter increment format
-            // If a separate counter format is given after the |, use it, otherwise reuse the number format itself as counter format
-            $parts = explode ("|", $nr);
-            $format = $parts[0];
-            $counterfmt = $parts[(count($parts)>1)?1:0];
 
-            // Now find the next counter that does not lead to duplicate
-            $newnumber = null;
-            $model = $this->getModel();
-
-            $count = 0;
-            $created = false;
-            // Make up to 150 attempts to create a number...
-            while (empty($newnumber) && ($count<150)) {
-                $count += 1;
-
-                // Find the next counter value
-                $scopeId = '';
-                if ($scope>=1) $scopeId = $store->getWebsiteId();
-                if ($scope>=2) $scopeId .= '/' . $store->getGroupId();
-                if ($scope>=3) $scopeId .= '/' . $store->getStoreId();
-                $count = $model->getCounterValueIncremented($nrtype, $counterfmt, $increment, $scopeId);
-                $newnumber = str_replace ("#", sprintf('%0' . (int)$digits . 's', $count), $format);
-
-                // Check whether that number is already in use. If so, attempt to create the next number:
-                $modelname=($nrtype=='order') ? 'sales/order' : ('sales/order_'.$nrtype);
-                $collection = Mage::getModel($modelname)->getCollection()->addFieldToFilter('increment_id', $newnumber);
-                if ($collection->getAllIds()) {
-                    Mage::Log("$nrtype number $newnumber already in use, trying again", null, 'ordernumber.log');
-                    //number already exists => next attempt in the loop
-                    $newnumber = null;
-                } else {
-                    $object->setIncrementId($newnumber);
-                    $created = true;
-                }
-            }
-            if (!$created) {
-                Mage::Log("Unable to create $nrtype number for counter format $nr (name $counterfmt, scope $scopeId)...", null, 'ordernumber.log');
-            }
-        }
-    }
+			$info = array('order'=>$order, $nrtype=>$object, 'store'=>$store);
+			$newnumber = null;
+			$count = 0;
+			$created = false;
+			// Make up to 150 attempts to create a number...
+			while (empty($newnumber) && ($count<150)) {
+				$count += 1;
+				$newnumber = $helper->getHelper()->createNumber ($fmt, $nrtype, $info, $customvars, $ctrsettings);
+				
+				// Check whether that number is already in use. If so, attempt to create the next number:
+				$modelname=($nrtype=='order') ? 'sales/order' : ('sales/order_'.$nrtype);
+				$collection = Mage::getModel($modelname)->getCollection()->addFieldToFilter('increment_id',$newnumber);
+				if ($collection->getAllIds()) {
+					Mage::Log("$nrtype number $newnumber already in use, trying again", null, 'ordernumber.log');
+					//number already exists => next attempt in the loop
+					$newnumber = null;
+				} else {
+					$object->setIncrementId($newnumber);
+					$created = true;
+				}
+			}
+			if (!$created) {
+				Mage::Log("Unable to create $nrtype number for counter format $nr (name $counterfmt, scope $scopeId)...", null, 'ordernumber.log');
+			}
+			return $newnumber;
+		}
+	}
+
+//                 // Find the next counter value
+//                 $scopeId = '';
+//                 if ($scope>=1) $scopeId = $store->getWebsiteId();
+//                 if ($scope>=2) $scopeId .= '/' . $store->getGroupId();
+//                 if ($scope>=3) $scopeId .= '/' . $store->getStoreId();
+//                 $count = $model->getCounterValueIncremented($nrtype, $counterfmt, $increment, $scopeId);
+//                 $newnumber = str_replace ("#", sprintf('%0' . (int)$digits . 's', $count), $format);
 
 }
diff --git a/lib/OpenTools/Ordernumber/library/ordernumber_helper.php b/lib/OpenTools/Ordernumber/library/ordernumber_helper.php
index 2b504bc7188d0738e66ab80aa4d08f42bc1f68e1..1be63aec5aad46d7708f78b6b5a4ff3796c29132 100644
--- a/lib/OpenTools/Ordernumber/library/ordernumber_helper.php
+++ b/lib/OpenTools/Ordernumber/library/ordernumber_helper.php
@@ -6,7 +6,7 @@
  * @license GNU/GPLv3 http://www.gnu.org/licenses/gpl-3.0.html
 **/
 
-if ( !defined( 'ABSPATH' ) && !defined('_JEXEC') ) { 
+if ( !defined( 'ABSPATH' ) && !defined('_JEXEC') && !defined('_OPENTOOLS_ORDERNUMBER_FRAMEWORK')) { 
 	die( 'Direct Access to ' . basename( __FILE__ ) . ' is not allowed.' );
 }
 
@@ -367,8 +367,6 @@ class OrdernumberHelper {
 		$format = $this->setupNumberFormatString($fmt, $type, $order, $reps);
 		$format = $this->doReplacements($format, $reps);
 		$ctrsettings = $this->extractCounterSettings ($format, $type, $ctrsettings);
-JFactory::getApplication()->enqueueMessage("<pre>Counter Settings: ".print_r($ctrsettings,1)."</pre>", 'error');
-// JFactory::getApplication()->enqueueMessage("<pre>Replacements for $type:".print_r($reps,1)."</pre>", 'error');
 		// Increment the counter only if the format contains a placeholder for it!
 		if (strpos($ctrsettings["${type}_format"], "#") !== false) {
 			$countername = $ctrsettings["${type}_counter"];
diff --git a/lib/OpenTools/Ordernumber/ordernumber_helper_magento.php b/lib/OpenTools/Ordernumber/ordernumber_helper_magento.php
index 6803e29910e3d751477fc16df8a05bad8ec5e651..394109f16c2c2717374370425bb3be5f330e01d7 100644
--- a/lib/OpenTools/Ordernumber/ordernumber_helper_magento.php
+++ b/lib/OpenTools/Ordernumber/ordernumber_helper_magento.php
@@ -6,6 +6,7 @@
  * @license AFL
 **/
 
+defined ('_OPENTOOLS_ORDERNUMBER_FRAMEWORK') or define('_OPENTOOLS_ORDERNUMBER_FRAMEWORK', 1);
 if (!class_exists( 'OrdernumberHelper' )) 
 	require_once (dirname(__FILE__) . '/library/ordernumber_helper.php');
 
@@ -28,7 +29,7 @@ class OrdernumberHelperMagento extends OrdernumberHelper {
 			$helper = new OrdernumberHelperMagento();
 		}
 		return $helper;
-    }
+	}
 	
 	/**
 	 * HELPER FUNCTIONS, Magento-specific
@@ -41,73 +42,31 @@ class OrdernumberHelperMagento extends OrdernumberHelper {
 		// TODO
 // 		return plugins_url('library/' . $type . '/' . $file, __FILE__);
     }
-    
-    public function print_admin_styles() {
-// 		wp_register_style('ordernumber-styles',  $this->urlPath('css', 'ordernumber.css'));
-// 		wp_enqueue_style('ordernumber-styles');
-	}
-	
-	public function print_admin_scripts() {
-// 		wp_register_script( 'ordernumber-script', $this->urlPath('js', 'ordernumber.js',  __FILE__), array('jquery') );
-// 		wp_enqueue_script( 'ordernumber-script');
-		
-		// Handle the translations:
-// 		$localizations = array( 'ajax_url' => admin_url( 'admin-ajax.php' ) );
-		
-// 		$localizations['ORDERNUMBER_JS_JSONERROR'] = $this->__("Error reading response from server:");
-// 		$localizations['ORDERNUMBER_JS_NOT_AUTHORIZED'] = $this->__("You are not authorized to modify order number counters.");
-// 		$localizations['ORDERNUMBER_JS_NEWCOUNTER'] = $this->__("Please enter the format/name of the new counter:");
-// 		$localizations['ORDERNUMBER_JS_ADD_FAILED'] = $this->__("Failed adding counter {0}");
-// 		$localizations['ORDERNUMBER_JS_INVALID_COUNTERVALUE'] = $this->__("You entered an invalid value for the counter.\n\n");
-		
-// 		$localizations['ORDERNUMBER_JS_EDITCOUNTER'] = $this->__("{0}Please enter the new value for the counter '{1}' (current value: {2}):");
-// 		$localizations['ORDERNUMBER_JS_MODIFY_FAILED'] = $this->__("Failed modifying counter {0}");
-// 		$localizations['ORDERNUMBER_JS_DELETECOUNTER'] = $this->__("Really delete counter '{0}' with value '{1}'?");
-// 		$localizations['ORDERNUMBER_JS_DELETE_FAILED'] = $this->__("Failed deleting counter {0}");
 
-		// in JavaScript, object properties are accessed as ajax_object.ajax_url, ajax_object.we_value
-// 		wp_localize_script( 'ordernumber-script', 'ajax_ordernumber', $localizations );
-	}
-
-
-
-
- 	function getAllCounters($type) {
-		$counters = array();
-// 		$pfxlen = strlen(self::$ordernumber_counter_prefix );
-// 		foreach (wp_load_alloptions() as $name => $value) {
-// 			if (substr($name, 0, $pfxlen) == self::$ordernumber_counter_prefix) {
-// 				$parts = explode('-', substr($name, $pfxlen), 2);
-// 				if (sizeof($parts)==1) {
-// 					array_unshift($parts, 'ordernumber');
-// 				}
-// 				if ($parts[0]==$type) {
-// 					$counters[] = array(
-// 						'type'  => $parts[0],
-// 						'name'  => $parts[1],
-// 						'value' => $value,
-// 					);
-// 				}
-// 			}
-// 		}
-		return $counters;
+	function getAllCounters($type) {
+		// This function is not implemented for Magento, as we don't use the 
+		// library's counter modification table, but a Magento-customized
+		// counter modification table without AJAX calls!
+		return array();
 	}
 
     function getCounter($type, $format, $default=0) {
-		return get_option (self::$ordernumber_counter_prefix.$type.'-'.$format, $default);
+    // TODO...
+// 		return get_option (self::$ordernumber_counter_prefix.$type.'-'.$format, $default);
 	}
-    
+
 	function addCounter($type, $format, $value) {
 		return $this->setCounter($type, $format, $value);
 	}
 
 	function setCounter($type, $format, $value) {
-		return update_option(self::$ordernumber_counter_prefix.$type.'-'.$format, $value);
+		// TODO...
+// 		return update_option(self::$ordernumber_counter_prefix.$type.'-'.$format, $value);
 	}
 
 	function deleteCounter($type, $format) {
-		return delete_option(self::$ordernumber_counter_prefix.$type.'-'.$format);
+		// TODO...
+// 		return delete_option(self::$ordernumber_counter_prefix.$type.'-'.$format);
 	}
 
-
 }