.is + ':', config.animation, 'not found!');
          abortedConfigure = true;
          break;
        }
      }
      config.timing.delay = oldDelay;
      config.node = null;
      // if a bad animation was configured, abort config.
      if (abortedConfigure) {
        return;
      }

      this._effect = new GroupEffect(effects);
      return this._effect;
    },

    complete: function() {
      for (var animation, index = 0; animation = this._animations[index]; index++) {
        animation.complete(