 
     private function _save(name:String, filename:String):void {
 
-      var boundary:String = MultiPartFormUtil.boundary();
-
-      this.uploadFormData.push( MultiPartFormUtil.fileField(this.uploadFieldName, recorder.convertToWav(name), filename, "audio/wav") );
-      var request:URLRequest = MultiPartFormUtil.request(this.uploadFormData);
-      this.uploadFormData.pop();
-
-      request.url = this.uploadUrl;
+      MultiPartFormUtil.boundary();
+
+      uploadFormData.push(MultiPartFormUtil.fileField(uploadFieldName, recorder.convertToWav(name), filename, "audio/wav"));
+      var request:URLRequest = MultiPartFormUtil.request(uploadFormData);
+      uploadFormData.pop();
+
+      request.url = uploadUrl;
 
       var loader:URLLoader = new URLLoader();
       loader.addEventListener(Event.COMPLETE, onSaveComplete);


    private function onSaveComplete(event:Event):void {
      var loader:URLLoader = URLLoader(event.target);
      ExternalInterface.call(this.EVENT_HANDLER, RecorderJSInterface.SAVED, this.recorder.currentSoundName, loader.data);
    }

    private function onIOError(event:Event):void {
      ExternalInterface.call(this.EVENT_HANDLER, RecorderJSInterface.SAVE_FAILED, this.recorder.currentSoundName, IOErrorEvent(event).text);
    }

    private function onSecurityError(event:Event):void {
      ExternalInterface.call(this.EVENT_HANDLER, RecorderJSInterface.SAVE_FAILED, this.recorder.currentSoundName, SecurityErrorEvent(event).text);
    }

    private function onProgress(event:Event):void {
      ExternalInterface.call(this.EVENT_HANDLER, RecorderJSInterface.SAVE_PROGRESS, this.recorder.currentSoundName, ProgressEvent(event).bytesLoaded, ProgressEvent(event).bytesTotal);
    }
  }
}

    }

    private function playbackStarted(event:Event):void {
      ExternalInterface.call(EVENT_HANDLER, MicrophoneRecorder.PLAYBACK_STARTED, recorder.currentSoundName, recorder.latency);
    }

    private function playComplete(event:Event):void {
      ExternalInterface.call(EVENT_HANDLER, RecorderJSInterface.STOPPED, recorder.currentSoundName);
    }

    private function microphoneActivity(event:Event):void {
      ExternalInterface.call(EVENT_HANDLER, RecorderJSInterface.MICROPHONE_ACTIVITY, recorder.mic.getActivityLevel());
    }

    private function microphoneLevel(event:MicrophoneLevelEvent):void {
      ExternalInterface.call(EVENT_HANDLER, RecorderJSInterface.MICROPHONE_LEVEL, event.levelValue);
    }

    private function microphoneSamples(event:MicrophoneSamplesEvent):void {
      ExternalInterface.call(EVENT_HANDLER, RecorderJSInterface.MICROPHONE_SAMPLES, event.samples);
    }

    public function init(url:String=null, fieldName:String=null, formData:Array=null):void {
      uploadUrl = url;
      uploadFieldName = fieldName;
      update(formData);
    }

    public function update(formData:Array=null):void {
      uploadFormData = [];
      if(formData) {
        for(var i:int=0; i<formData.length; i++) {
          var data:Object = formData[i];
          uploadFormData.push(MultiPartFormUtil.nameValuePair(data.name, data.value));
        }
      }
    }

    public function isMicrophoneAccessible():Boolean {
      return isMicrophoneConnected() && !recorder.mic.isMuted();
    }

    private function isMicrophoneConnected():Boolean {
