This should make handling single transformation transactions
more explicit.
     transform: function(Transformation, args) {
         var toret, transformation;
 
     transform: function(Transformation, args) {
         var toret, transformation;
 
+        if(!this._currentTransaction) {
+            return this.transaction(function() {
+                return this.transform(Transformation, args);
+            }, this);
+        }
+
         if(typeof Transformation === 'function') {
             transformation = new Transformation(this, this, args);
         } else {
         if(typeof Transformation === 'function') {
             transformation = new Transformation(this, this, args);
         } else {
                 },
                 function() {
                     if(this._transformationLevel === 1 && !this._undoInProgress) {
                 },
                 function() {
                     if(this._transformationLevel === 1 && !this._undoInProgress) {
-                        if(this._currentTransaction) {
-                            this._currentTransaction.pushTransformation(transformation);
-                        } else {
-                            this.undoStack.push(new Transaction([transformation]));
-                        }
+                        this._currentTransaction.pushTransformation(transformation);
                     }
                     if(!this._undoInProgress && this._transformationLevel === 1) {
                         this.redoStack = [];
                     }
                     if(!this._undoInProgress && this._transformationLevel === 1) {
                         this.redoStack = [];