ProtoObject._new = function() {
  return this.basicNew().initialize();
};

_Object._new = ProtoObject._new;
//OrderedCollection._new = _Object._new;
Point._new = _Object._new;
Rectangle._new = _Object._new;
S2JWorld._new = _Object._new; 
BlockClosure._new = _Object._new; 

Number.prototype._plus = function(anotherNumber){ return this + anotherNumber };
Number.prototype._minus = function(anotherNumber){ return this - anotherNumber };
Number.prototype._at = function(anotherNumber){ return Point.x_y_(this, anotherNumber); };
Number.prototype._less = function(anotherNumber) {
  if( this < anotherNumber)
    return _true;
  else
    return _false;
};
Number.prototype._greater = function(anotherNumber) {
  if( this > anotherNumber)
    return _true;
  else
    return _false;
};
Number.prototype._less_equals = function(anotherNumber) {
  if( this <= anotherNumber)
    return _true;
  else
    return _false;
};

Array.new_ = function(arr){return new Array(arr)};

BlockClosure._objectPrototype.prototype.value = function(){
  return this.$func.apply(this, arguments);
};

BlockClosure._objectPrototype.prototype.whileTrue_ = function(anotherBlock){
  // TODO implement whileTrue for real
  while(this.value() == _true) {
    anotherBlock.value();
  }
};
@@ -235,42 +235,197 @@
 w; %0A
-BlockClosure._new = _Object._new; 
+S2JBallGame._new = S2JWorld._new;%0AS2JBall._new = S2JWorld._new;%0ABlockClosure._new = _Object._new; %0AError._new = _Object._new;%0A%0AError._objectPrototype.prototype.signal=function()%7Bthrow this%7D
 %0A%0ANu

add _new for Error and S2JBall...