var Class = (function generate() {
	var ClassBuilder = function (obj) {
		this.__obj = obj;
		this.__extends_name = '';
		this.__extends_obj = {};
		this.__properties
	}

	ClassBuilder.prototype.extend = function (name, classobject) {
		this.__extends_name = name;
		this.__extends_obj = classobject;
		return this;
	}

	ClassBuilder.prototype.number = function (name, get, set) {
		this.__obj.prototype[name] = 0;
		if (get || set) {
			var namemix = name[0].toUpperCase() + name.substring(1);
			if (get)
				this.__obj.prototype['get'+namemix] = Function('return this.'+name);
			if (set)
				this.__obj.prototype['set'+namemix] = Function ('value', 'this.'+name+'=value;');
		}
		return this;
	}

	ClassBuilder.prototype.string = function (name) {
		this.__obj.prototype[name] = '';
		return this;
	}

	ClassBuilder.prototype.array = function (name) {
		this.__obj.prototype[name] = [];
		return this;
	}

	ClassBuilder.prototype.object = function (name) {
		this.__obj.prototype[name] = {};
		return this;
	}

	ClassBuilder.prototype.function = function(name, func) {
		this.__obj.prototype[name] = func;
		return this;
	}

	ClassBuilder.prototype._generate = function () {
		if (this.__extends_obj != undefined) {
			this.__obj.prototype['$'+this.__extends_name] = this.__extends_obj;
			for (var propname in this.__extends_obj.prototype) {
				if (!this.__obj.prototype[propname])
					this.__obj.prototype[propname] = this.__extends_obj.prototype[propname];
				else
					this.__obj.prototype['$'+this.__extends_name+'_'+propname] = this.__extends_obj.prototype[propname];
			}
		}
		return Function('obj', 'return obj');
	}

	ClassBuilder.prototype.build = function() {
		return this._generate()(this.__obj);
	}

	return function (obj) { return new ClassBuilder(obj) };
})();
@@ -414,185 +414,128 @@
 ;%0A%09%09
-if (get %7C%7C set) %7B%0A%09%09%09var namemix = name%5B0%5D.toUpperCase() + name.substring(1);%0A%09%09%09if (get)%0A%09%09%09%09this.__obj.prototype%5B'get'+namemix%5D = F
+this._generate_set_get(name, get, set);%0A%09%09return this;%0A%09%7D%0A%0A%09ClassBuilder.prototype.string = f
 unction
-('return this.'+name);%0A%09%09%09if (
+ (name, get, 
 set)
-%0A%09%09
+ %7B%0A
 %09%09th
@@ -557,73 +557,62 @@
 ype%5B
-'set'+
 name
-mix
 %5D = 
-Function ('value', 'this.'+name+'=value;'
+'';%0A%09%09this._generate_set_get(name, get, set
 );%0A
-%09%09%7D%0A
 %09%09re
@@ -642,38 +642,37 @@
 ilder.prototype.
-string
+array
  = function (nam
@@ -664,32 +664,42 @@
 = function (name
+, get, set
 ) %7B%0A%09%09this.__obj
@@ -713,26 +713,68 @@
 ype%5Bname%5D = 
-''
+%5B%5D;%0A%09%09this._generate_set_get(name, get, set)
 ;%0A%09%09return t
@@ -798,37 +798,38 @@
 ilder.prototype.
-array
+object
  = function (nam
@@ -821,32 +821,42 @@
 = function (name
+, get, set
 ) %7B%0A%09%09this.__obj
@@ -870,26 +870,68 @@
 ype%5Bname%5D = 
-%5B%5D
+%7B%7D;%0A%09%09this._generate_set_get(name, get, set)
 ;%0A%09%09return t
@@ -955,38 +955,40 @@
 ilder.prototype.
-object
+function
  = function (nam
@@ -982,22 +982,27 @@
 function
- 
 (name
+, func
 ) %7B%0A%09%09th
@@ -1024,26 +1024,28 @@
 ype%5Bname%5D = 
-%7B%7D
+func
 ;%0A%09%09return t
@@ -1044,32 +1044,33 @@
 return this;%0A%09%7D%0A
+%09
 %0A%09ClassBuilder.p
@@ -1074,32 +1074,41 @@
 r.prototype.
-function
+_generate_set_get
  = function(
@@ -1102,39 +1102,138 @@
 t = function
+ 
 (name, 
-func) %7B%0A
+get, set) %7B%0A%09%09if (get %7C%7C set) %7B%0A%09%09%09var namemix = name%5B0%5D.toUpperCase() + name.substring(1);%0A%09%09%09if (get)%0A%09%09
 %09%09this.__obj
@@ -1247,36 +1247,157 @@
 ype%5B
+'get'+
 name
+mix
 %5D = 
-func;%0A%09%09return this;
+Function('return this.'+name);%0A%09%09%09if (set)%0A%09%09%09%09this.__obj.prototype%5B'set'+namemix%5D = Function ('value', 'this.'+name+'=value;');%0A%09%09%7D
 %0A%09%7D%0A

add get and set for other variables than number