 + * only this.
 + */
 +Argument.prototype.getArgs = function() {
-+    return [ this ];
++  return [ this ];
 +};
 +
 +/**

+ * We don't currently plan to distinguish between integers and floats
+ */
+function NumberType(typeSpec) {
+    if (typeSpec) {
+        this.min = typeSpec.min;
+        this.max = typeSpec.max;
+        this.step = typeSpec.step;
+    }
+}
+
+NumberType.prototype = new Type();
+
+NumberType.prototype.stringify = function(value) {
+    if (value == null) {
+        return '';
+    }
+    return '' + value;
+};
+
+NumberType.prototype.parse = function(arg) {
+    if (arg.text.replace(/\s/g, '').length === 0) {
+        return new Conversion(null, arg, Status.INCOMPLETE, '');
+    }
+
+    var value = parseInt(arg.text, 10);
+    if (isNaN(value)) {
+        return new Conversion(value, arg, Status.ERROR,
+            'Can\'t convert "' + arg.text + '" to a number.');
+    }
+
+    if (this.max != null && value > this.max) {
+        return new Conversion(value, arg, Status.ERROR,
+            '' + value + ' is greater that maximum allowed: ' + this.max + '.');
+    }
+
+    if (this.min != null && value < this.min) {
+        return new Conversion(value, arg, Status.ERROR,
+            '' + value + ' is smaller that minimum allowed: ' + this.min + '.');
+    }
+
+    return new Conversion(value, arg);
+};
+
+NumberType.prototype.decrement = function(value) {
+    return (this.min != null && value - 1 >= this.min) ? value - 1 : value;
+};
+
+NumberType.prototype.increment = function(value) {
+    return (this.max != null && value + 1 <= this.max) ? value + 1 : value;
+};
+
+NumberType.prototype.name = 'number';

+ */
+function isSimple(typed) {
+   for (var i = 0; i < typed.length; i++) {
+     var c = typed.charAt(i);
+     if (c === ' ' || c === '"' || c === '\'' || c === '\\') {
+       return false;
+     }
+   }
+   return true;
+}
