Object.prototype.toString = function (level) {
	level = level || 1;
	var s = "";
	if(this instanceof Object) {
		s += "object {\n";
		for(var k in this) {
			for (var i=0; i<level; i++) s += "  ";
			s += k + ": " + ((this[k] instanceof Object)?this[k].toString(level+1):this[k]) + "\n";
		}
		for (var i=0; i<level-1; i++) s += "  ";
		s += "}"
	}else{
		s += "" + this + "\n";
	}
	return s;
}
Array.prototype.toString = function (level) {
	level = level || 1;
	var s = "";
	if(this instanceof Object) {
		s += "array [\n";
		for(var k in this) {
			for (var i=0; i<level; i++) s += "  ";
			s += k + ": " + ((this[k] instanceof Object)?this[k].toString(level+1):this[k]) + "\n";
		}
		for (var i=0; i<level-1; i++) s += "  ";
		s += "]"
	}else{
		s += "" + this + "\n";
	}
	return s;
}