 
         # attach mp3 parser for rewind buffer
         @parser = new Parser()
+        
+        # incoming -> Parser
         @stream.on "data",      (chunk)     => @parser.write chunk
-        @parser.on "frame",     (frame)     => @emit "frame", frame
+        
+        # outgoing -> Stream
+        @parser.on "frame", (frame) => 
+            @emit "frame", frame
+
+            # -- queue up frames until we get to @emit_duration -- #
+            if @last_header
+                # -- recombine frame and header -- #
+                
+                fbuf = new Buffer( @last_header.length + frame.length )
+                @last_header.copy(fbuf,0)
+                frame.copy(fbuf,@last_header.length)
+                @_chunk_queue.push fbuf
+                
+                if @framesPerSec && ( @_chunk_queue.length / @framesPerSec > @emit_duration )
+                    len = 0
+                    len += b.length for b in @_chunk_queue
+                
+                    # make this into one buffer
+                    buf = new Buffer(len)
+                    pos = 0
+                
+                    for fb in @_chunk_queue
+                        fb.copy(buf,pos)
+                        pos += fb.length
+                    
+                    # reset chunk array
+                    @_chunk_queue.length = 0
+                
+                    # emit new buffer
+                    @emit "data", buf
         
         # we need to grab one frame to compute framesPerSec
         @parser.on "header", (data,header) =>

        @connected      = false
        @framesPerSec   = null
        
        @log = @stream.log
        
        # connection drop handling
        @_maxBounces    = 10

                
                @stream_key = ['mp3',header.samplingRateHz,header.bitrateKBPS,(if header.modeName == "Stereo" then "s" else "m")].join("-")
                
            @last_header = data
            @emit "header", data, header

        # return with success
