bm.draw_screen
   imode.load_more_threads ibuf.content_height
 
-  reporting_thread { sleep 3; PollManager.poll }
-  PollManager.start_thread
+  # reporting_thread { sleep 3; PollManager.poll }
+  #PollManager.start_thread
 
   until $exception
     bm.draw_screen
 
 
         values.each do |v|
           msize, mdate = v.attr['RFC822.SIZE'], Time.parse(v.attr["INTERNALDATE"])
-          id = sprintf("%d.%08d", mdate.to_i, msize)
+          id = sprintf("%d.%07d", mdate.to_i, msize).to_i
           @ids << id
           @imap_ids[id] = v.seqno
         end
 
     @username = username
     @password = password
     @uri = uri
+    @cur_offset = start_offset
 
     opts = {}
     opts[:username] = @username if @username
   def host; @parsed_uri.host; end
   def filename; @parsed_uri.path[1..-1] end ##XXXX TODO handle nil
 
-  def next; with(@loader.next) { @cur_offset = @loader.cur_offset }; end # only necessary because YAML is a PITA
+  def next
+    offset, labels = @loader.next
+    self.cur_offset = @loader.cur_offset  # only necessary because YAML is a PITA
+    [offset, (labels + @labels).uniq]
+  end
+
   def end_offset; @f.size; end
   def cur_offset= o; @cur_offset = @loader.cur_offset = o; @dirty = true; end
   def id; @loader.id; end
 
   def done?;
     return true if broken? 
     begin
-      (cur_offset ||= start_offset) >= end_offset
+      (self.cur_offset ||= start_offset) >= end_offset
     rescue SourceError => e
       true
     end
     end
   end
 
+protected
+  
   def cur_offset= o
     @cur_offset = o
     @dirty = true