diff --git a/assets/js/ordernumber-counter.js b/assets/js/ordernumber-counter.js
index dff1e44af6636c71665c681c2dc80c2e554edd89..848ed6af91bd2b34741865def85b9a8af65213a7 100644
--- a/assets/js/ordernumber-counter.js
+++ b/assets/js/ordernumber-counter.js
@@ -14,8 +14,8 @@ var getCounterData = function (btn) {
 }
 var handleJSONResponse = function (json, counter) {
 //     updateMessages (json['messages'], "ordernumber");
-    if (!json.authorized) {
-        alert (ajax_ordernumber.PLG_ORDERNUMBER_JS_NOT_AUTHORIZED);
+    if (!json.authorized && !json.success) {
+        alert (ajax_ordernumber.ORDERNUMBER_JS_NOT_AUTHORIZED);
     } else if (json.error) {
         alert (json.error);
     } else {
@@ -23,114 +23,116 @@ var handleJSONResponse = function (json, counter) {
     }
 }
 var ajaxEditCounter = function (btn, nrtype, ctr, value) {
-    var counter = getCounterData (btn);
-    counter.type = nrtype;
-    counter.counter = ctr;
-    counter.value = value;
-    var value = NaN;
-    var msgprefix = "";
-    while (isNaN (value) && (value != null)) {
-        value = prompt (String.Format (ajax_ordernumber.PLG_ORDERNUMBER_JS_EDITCOUNTER, msgprefix, counter.counter, counter.value), counter.value);
-        if (value != null)
-            value = parseInt (value);
-        if (isNaN (value)) 
-            msgprefix = ajax_ordernumber.PLG_ORDERNUMBER_JS_INVALID_COUNTERVALUE;
-    }
-    if (value != null) {
-        var loading = jQuery ("img.wc-ordernumber-loading").first ().clone ().insertAfter (btn).show ();
-        jQuery.post (
-			ajax_ordernumber.admin_url,
-			{
+	var counter = getCounterData (btn);
+	counter.type = nrtype;
+	counter.counter = ctr;
+	counter.value = value;
+	var value = NaN;
+	var msgprefix = "";
+	while (isNaN (value) && (value != null)) {
+		value = prompt (String.Format (ajax_ordernumber.ORDERNUMBER_JS_EDITCOUNTER, msgprefix, counter.counter, counter.value)+ ajax_ordernumber.ajax_url, counter.value);
+		if (value != null)
+			value = parseInt (value);
+		if (isNaN (value)) 
+			msgprefix = ajax_ordernumber.ORDERNUMBER_JS_INVALID_COUNTERVALUE;
+	}
+	if (value != null) {
+		var loading = jQuery ("img.ordernumber-loading").first ().clone ().insertAfter (btn).show ();
+		jQuery.ajax ({
+			type: "POST",
+			url: ajax_ordernumber.ajax_url,
+			data: {
 				action: 'set_counter',
 				nrtype: counter.type, 
 				counter: counter.counter, 
-				value: value 
+				value: value,
 			},
-            success: function ( data ) {
-                try {
-                    var json = jQuery.parseJSON (data);
-                    handleJSONResponse (json, counter);
-                } catch (e) {
-                    alert (ajax_ordernumber.PLG_ORDERNUMBER_JS_JSONERROR + "\n" + e);
-                    return;
-                }
-                if (json.success>0) {
-                    jQuery (counter.row).children (".counter_value").text (value);
-                } else {
-                    alert (String.Format (ajax_ordernumber.PLG_ORDERNUMBER_JS_MODIFY_FAILED, counter.counter));
-                }
-            },
-            error: function () { alert (String.Format (ajax_ordernumber.PLG_ORDERNUMBER_JS_MODIFY_FAILED, counter.counter)); },
-            complete: function () { jQuery (loading).remove (); },
-        });
-    }
+			success: function ( json ) {
+				try {
+					handleJSONResponse (json, counter);
+				} catch (e) {
+					alert (ajax_ordernumber.ORDERNUMBER_JS_JSONERROR + "\n" + e);
+					return;
+				}
+				if (json.success>0) {
+					jQuery (counter.row).children (".counter_value").text (value);
+				} else {
+					alert (String.Format (ajax_ordernumber.ORDERNUMBER_JS_MODIFY_FAILED, counter.counter));
+				}
+			},
+			error: function () { alert (String.Format (ajax_ordernumber.ORDERNUMBER_JS_MODIFY_FAILED, counter.counter)); },
+			complete: function () { jQuery (loading).remove (); },
+		});
+	}
 }
 var ajaxDeleteCounter = function (btn, nrtype, ctr, value) {
-    var counter = getCounterData (btn);
-    counter.type = nrtype;
-    counter.counter = ctr;
-    counter.value = value;
-    var proceed = confirm (String.Format (ajax_ordernumber.PLG_ORDERNUMBER_JS_DELETECOUNTER, counter.counter, counter.value));
-    if (proceed = = true) {
-        var loading = jQuery ("img.wc-ordernumber-loading").first ().clone ().insertAfter (btn).show ();
-        jQuery.post (
-			ajax_ordernumber.admin_url,
-			{
+	var counter = getCounterData (btn);
+	counter.type = nrtype;
+	counter.counter = ctr;
+	counter.value = value;
+	var proceed = confirm (String.Format (ajax_ordernumber.ORDERNUMBER_JS_DELETECOUNTER, counter.counter, counter.value));
+	if (proceed == true) {
+		var loading = jQuery ("img.ordernumber-loading").first ().clone ().insertAfter (btn).show ();
+		jQuery.ajax ({
+			type: "POST",
+			dataType: "json",
+			url: ajax_ordernumber.ajax_url,
+			data: {
 				action: 'delete_counter',
 				nrtype: counter.type, 
-				counter: counter.counter 
+				counter: counter.counter,
 			},
-            success: function ( data ) {
-                try {
-                    var json = jQuery.parseJSON (data);
-                    handleJSONResponse (json, counter);
-                } catch (e) {
-                    alert (ajax_ordernumber.PLG_ORDERNUMBER_JS_JSONERROR + "\n" + e);
-                    return;
-                }
-                if (json.success>0) {
-                    jQuery (counter.row).fadeOut (1500, function () { jQuery (counter.row).remove (); });
-                } else {
-                    alert (String.Format (ajax_ordernumber.PLG_ORDERNUMBER_JS_DELETE_FAILED, counter.counter));
-                }
-            },
-            error: function () { alert (String.Format (ajax_ordernumber.PLG_ORDERNUMBER_JS_DELETE_FAILED, counter.counter)); },
-            complete: function () { jQuery (loading).remove (); },
-        });
-    }
+			success: function ( json ) {
+				try {
+					handleJSONResponse (json, counter);
+				} catch (e) {
+					alert (ajax_ordernumber.ORDERNUMBER_JS_JSONERROR + "\n" + e);
+					return;
+				}
+				if (json.success>0) {
+					jQuery (counter.row).fadeOut (1200, function () { jQuery (counter.row).remove (); });
+				} else {
+					alert (String.Format (ajax_ordernumber.ORDERNUMBER_JS_DELETE_FAILED, counter.counter));
+				}
+			},
+			error: function () { alert (String.Format (ajax_ordernumber.ORDERNUMBER_JS_DELETE_FAILED, counter.counter)); },
+			complete: function () { jQuery (loading).remove (); },
+		});
+	}
 }
 var ajaxAddCounter = function (btn, nrtype) {
-    var row = jQuery (btn).parents ("tr.addcounter_row");
-    var countername = prompt (ajax_ordernumber.PLG_ORDERNUMBER_JS_NEWCOUNTER);
-    if (countername != null) {
-        var loading = jQuery ("img.wc-ordernumber-loading").first ().clone ().insertAfter (jQuery (btn).find ("img.ordernumber-counter-addbtn")).show ();
-        jQuery.post (
-			ajax_ordernumber.admin_url,
-			{
+	var row = jQuery (btn).parents ("tr.addcounter_row");
+	var countername = prompt (ajax_ordernumber.ORDERNUMBER_JS_NEWCOUNTER);
+	if (countername != null) {
+		var loading = jQuery ("img.ordernumber-loading").first ().clone ().insertAfter (jQuery (btn).find ("img.ordernumber-counter-addbtn")).show ();
+		jQuery.ajax ({
+			type: "POST",
+			dataType: "json",
+			url: ajax_ordernumber.ajax_url,
+			data: {
 				action: 'add_counter',
 				nrtype: nrtype, 
-				counter: countername 
-				
+				counter: countername,
+				value: 0,
 			},
-			success: function ( data ) {
-                var json = data ? jQuery.parseJSON (data) : null;
-                try {
-                    var json = jQuery.parseJSON (data);
-                    handleJSONResponse (json, null);
-                } catch (e) {
-                    alert (ajax_ordernumber.PLG_ORDERNUMBER_JS_JSONERROR + "\n" + e);
-                    return;
-                }
-                if (json.success>0) {
-                    if (json.newrow) {
-                        jQuery (row).before (jQuery (json.newrow));
-                    }
-                } else {
-                    alert (String.Format (ajax_ordernumber.PLG_ORDERNUMBER_JS_ADD_FAILED, countername));
-                }
-            },
-            error: function () { alert (String.Format (vPLG_ORDERNUMBER_JS_ADD_FAILED, countername)); },
-            complete: function () { jQuery (loading).remove (); },
-        });
-    }
+			
+			success: function ( json ) {
+				try {
+					handleJSONResponse (json, null);
+				} catch (e) {
+					alert (ajax_ordernumber.ORDERNUMBER_JS_JSONERROR + "\n" + e);
+					return;
+				}
+				if (json.success>0) {
+					if (json.newrow) {
+						jQuery (row).before (jQuery (json.newrow));
+					}
+				} else {
+					alert (String.Format (ajax_ordernumber.ORDERNUMBER_JS_ADD_FAILED, countername));
+				}
+			},
+			error: function () { alert (String.Format (ajax_ordernumber.ORDERNUMBER_JS_ADD_FAILED, countername)); },
+			complete: function () { jQuery (loading).remove (); },
+		});
+	}
 }
diff --git a/woocommerce-advanced-ordernumbers.php b/woocommerce-advanced-ordernumbers.php
index 8fd07432d54f089f351627a99a5aa0082b500898..26588fa932af8fafa4e9c5b3f58ffda46eb5828c 100644
--- a/woocommerce-advanced-ordernumbers.php
+++ b/woocommerce-advanced-ordernumbers.php
@@ -119,11 +119,14 @@ if ( in_array( 'woocommerce/woocommerce.php', apply_filters( 'active_plugins', g
 
 					array(
 						'name' 		=> __( 'Current Counters', 'woocommerce-advanced-ordernumbers' ),
-						'desc'		=> __( 'View and modify the current counter values.', 'woocommerce-advanced-ordernumbers' ),
+// 						'desc'		=> __( 'View and modify the current counter values.', 'woocommerce-advanced-ordernumbers' ),
 						'type' 		=> 'title',
 						'id' 		=> 'ordernumber_counters'
 					),
 					array(
+						'name' 		=> __( 'All Ordernumber Counters', 'woocommerce-advanced-ordernumbers' ),
+						'desc'		=> __( 'View and modify the current counter values. The counter value is the value used for the previous number. All changes are immediately applied!', 'woocommerce-advanced-ordernumbers' ),
+						'desc_tip'	=> true,
 						'id' 		=> 'ordernumber_counters',
 						'type' 		=> 'ordernumber_counters',
 					),
@@ -253,9 +256,18 @@ if ( in_array( 'woocommerce/woocommerce.php', apply_filters( 'active_plugins', g
 			 * Render the Counter Values modification table
 			 */
 			public function admin_field_counters ($settings) {
-        
+// 				if ( ! isset( $value['id'] ) ) {
+// 					$value['id'] = '';
+// 				}
+// 				if ( ! isset( $value['title'] ) ) {
+// 					$value['title'] = isset( $value['name'] ) ? $value['name'] : '';
+// 				}
+
+				// Description handling
+				$field_description = WC_Admin_Settings::get_field_description( $settings );
+				extract( $field_description );
+
 				// First, get all counter names:
-// print "<pre>All options: ".print_r(wp_load_alloptions(),1)."</pre>";
 				$counters = array();
 				$pfxlen = strlen($this->ordernumber_counter_prefix );
 				foreach (wp_load_alloptions() as $name => $value) {
@@ -272,10 +284,14 @@ if ( in_array( 'woocommerce/woocommerce.php', apply_filters( 'active_plugins', g
 					}
 				} 
 				?>
+
 				
 		<tr valign="top">
-			<th scope="row" class="titledesc"><?php _e( 'Current Counters:', 'woocommerce' ) ?></th>
-		    <td class="forminp">
+			<th scope="row" class="titledesc">
+				<label for="<?php echo esc_attr( $settings['id'] ); ?>"><?php echo esc_html( $settings['title'] ); ?></label>
+				<?php echo $tooltip_html; ?>
+			</th>
+		    <td class="forminp forminp-<?php echo sanitize_title( $settings['type'] ) ?>">
 				<img src='<?php echo plugins_url( 'assets/images/loading.gif', __FILE__ ); ?>' class='wc-ordernumber-loading' style="display: none; position: absolute; top: 2px; left: 0px; z-index: 9999;"/>
 				<table class="wc_ordernumber_counters widefat" cellspacing="0">
 					<?php
@@ -305,32 +321,16 @@ if ( in_array( 'woocommerce/woocommerce.php', apply_filters( 'active_plugins', g
 
 					<tbody>
 						<?php
-						foreach ($counters as $counter) {?>
-							<tr class='counter_row counter_type_<?php echo $counter['type'];?>'>
-								<td class='counter_type'><?php _e($counter['type'], 'wooocommerce-advanced-ordernumbers' ); ?></td>
-								<td class='counter_format'><?php echo esc_html($counter['name']); ?></td>
-								<td class='counter_value'><?php echo esc_html($counter['value']); ?></td>
-								<td class='counter_buttons'>
-									<div class='ordernumber-ajax-loading'>
-										<img src='<?php echo plugins_url( 'assets/images/icon-16-edit.png', __FILE__ ); ?>' 
-												class='ordernumber-counter-editbtn ordernumber-btn' 
-												onClick='ajaxEditCounter(this, <?php echo json_encode($counter['type']); ?>, <?php echo json_encode($counter['name']); ?>, <?php echo $counter['value']; ?>)' />
-									</div>
-									<div class='ordernumber-ajax-loading'>
-										<img src='<?php echo plugins_url( 'assets/images/icon-16-delete.png', __FILE__ ); ?>' 
-												class='ordernumber-counter-deletebtn ordernumber-btn' 
-												onClick='ajaxDeleteCounter(this, <?php echo json_encode($counter['type']); ?>, <?php echo json_encode($counter['name']); ?>, <?php echo $counter['value']; ?>)' />
-									</div>
-								</td>
-							</tr>
-						<?php
-						} ?>
+						foreach ($counters as $counter) {
+							echo $this->create_admin_counter_row($counter['type'], $counter['name'], $counter['value']);
+						} 
+						?>
 					</tbody>
 					<tfoot>
 						<tr class='addcounter_row'>
 							<td class="counter_type"></td>
 							<td colspan=3 class='counter_add'>
-								<div class='ordernumber-counter-addbtn ordernumber-btn' onClick='ajaxAddCounter(this, "ordernumber")'>
+								<div class='ordernumber-counter-addbtn ordernumber-btn' onClick="ajaxAddCounter(this, 'ordernumber')">
 									<div class='ordernumber-ajax-loading'><img src='<?php echo plugins_url( 'assets/images/icon-16-new.png', __FILE__ ); ?>' class='ordernumber-counter-addbtn' /></div>
 									<?php _e('Add new counter', 'woocommerce-advanced-ordernumbers'); ?>
 								</div>
@@ -343,6 +343,27 @@ if ( in_array( 'woocommerce/woocommerce.php', apply_filters( 'active_plugins', g
 		<?php
 			}
 			
+			public function create_admin_counter_row ($type, $format, $value=0) {
+				$html =	"
+					<tr class='counter_row counter_type_" . $type . "'>
+						<td class='counter_type'>" . __($type, 'wooocommerce-advanced-ordernumbers' ) . "</td>
+						<td class='counter_format'>" . (empty($format)?("<i>".__("[Global]", 'woocommerce-advanced-ordernumbers')."</i>"):esc_html($format)) . "</td>
+						<td class='counter_value'>" . esc_html($value) . "</td>
+						<td class='counter_buttons'>
+							<div class='ordernumber-ajax-loading'>
+							<img src='" . plugins_url( 'assets/images/icon-16-edit.png', __FILE__ ) . "' 
+										class='ordernumber-counter-editbtn ordernumber-btn' 
+										onClick='ajaxEditCounter(this, " . json_encode($type) . ", " . json_encode($format) . ", " . json_encode($value) . ")' />
+							</div>
+							<div class='ordernumber-ajax-loading'>
+								<img src='" . plugins_url( 'assets/images/icon-16-delete.png', __FILE__ ) . "' 
+										class='ordernumber-counter-deletebtn ordernumber-btn' 
+										onClick='ajaxDeleteCounter(this, " . json_encode($type) . ", " . json_encode($format) . ", " . json_encode($value) . ")' />
+							</div>
+						</td>
+					</tr>";
+				return $html;
+			}
 			
 			
 			/** 
@@ -386,7 +407,7 @@ if ( in_array( 'woocommerce/woocommerce.php', apply_filters( 'active_plugins', g
 			/**
 			 * Counter handling (simple loading/storing counters), storing them as options
 			 */
-			function _getCounter($type, $format, $start=1) {
+			function _getCounter($type, $format, $start=0) {
 				$count = get_option ($this->ordernumber_counter_prefix.$type.'-'.$format, $start);
 				return $count;
 			}
@@ -394,7 +415,41 @@ if ( in_array( 'woocommerce/woocommerce.php', apply_filters( 'active_plugins', g
 			function _setCounter($type, $format, $value) {
 				return update_option($this->ordernumber_counter_prefix.$type.'-'.$format, $value);
 			}
+			function _deleteCounter($type, $format) {
+				return delete_option($this->ordernumber_counter_prefix.$type.'-'.$format);
+			}
+			
+			public function counter_delete_callback() {
+				$json = array('action' => 'delete_counter', 'success' => 0);
+				$json['success'] = $this->_deleteCounter($_POST['nrtype'], $_POST['counter']);
+// print("Counter was set to $nr, post variables: nrtpe=$_POST['nrtype'], counter=$_POST['counter'], value=$_POST['value']\n\n");
+$json["message"] = "Counter was deleted, post variables: nrtpe=".$_POST['nrtype'].", counter=".$_POST['counter']."\n\n";
+				wp_send_json($json);
+			}
+
+			public function counter_add_callback () {
+				$type = $_POST['nrtype'];
+				$format = $_POST['counter'];
+// 				$value = $_POST['value'];
+				$value = "0";
+				$json = array('action' => 'add_counter', 'success' => 0);
+				if ($this->_getCounter($type, $format, -1) != -1) {
+					// Counter already exists => error message
+					$json['error'] = sprintf(__('Counter "%s" already exists, cannot create again.'), $format);
+				} else {
+					$json['success'] = $this->_setCounter($type, $format, $value);
+// 					$json['error']   = "Created counter $format with value $value";
+					$json['newrow']  = $this->create_admin_counter_row($type, $format, $value);
+				}
+				wp_send_json($json);
+			}
 			
+			public function counter_set_callback () {
+				$json = array('action' => 'set_counter', 'success' => 0);
+				$json['success'] = $this->_setCounter($_POST['nrtype'], $_POST['counter'], $_POST['value']);
+// print("Counter was set to $nr, post variables: nrtpe=".$_POST['nrtype'].", counter=".$_POST['counter'].", value=".$_POST['value']."\n\n");
+				wp_send_json($json);
+			}
 			
 			/**
 			 * Variable replacements: