diff -u -r -x *.o -x *.exe -x *.a -x *~ -x *.Po pan-0.103/pan/gui/pan.cc pann/pan/gui/pan.cc
--- pan-0.103/pan/gui/pan.cc	Tue Jun 27 16:37:13 2006
+++ pann/pan/gui/pan.cc	Sat Jul  8 16:46:46 2006
@@ -125,6 +125,10 @@
   }
 }
 
+Data *_g_data;
+ArticleCache *_g_cache;
+Queue *_g_queue;
+
 int
 main (int argc, char *argv[])
 {
@@ -185,6 +189,7 @@
       std::cerr << _("Please configure Pan's news servers before using it as an nzb client.") << std::endl;
        return 0;
     }
+	_g_data=static_cast<Data*>(&data);
 
     // load the preferences...
     char * filename = g_build_filename (file::get_pan_home().c_str(), "preferences.xml", NULL);
@@ -199,11 +204,13 @@
     ArticleCache cache (cache_path, prefs.get_int("cache-size-megs",10));
     g_free (cache_path);
     data.set_cache (&cache);
+	_g_cache=&cache;
 
     // instantiate the queue...
     GIOChannelSocket::Creator socket_creator;
     Queue queue (data, data, &socket_creator, 2);
     g_timeout_add (2500, queue_upkeep_timer_cb, &queue);
+	_g_queue=&queue;
 
     if (nzb)
     {
diff -u -r -x *.o -x *.exe -x *.a -x *~ -x *.Po pan-0.103/pan/tasks/task-xover.cc pann/pan/tasks/task-xover.cc
--- pan-0.103/pan/tasks/task-xover.cc	Sat Jul  8 12:52:34 2006
+++ pann/pan/tasks/task-xover.cc	Sat Jul  8 17:10:51 2006
@@ -31,6 +31,8 @@
 #include <pan/data/data.h>
 #include "nntp.h"
 #include "task-xover.h"
+#include "task-article.h"
+#include "queue.h"
 
 using namespace pan;
 
@@ -335,6 +337,47 @@
   check_in (nntp, health==OK);
 }
 
+extern Data *_g_data;
+extern ArticleCache *_g_cache;
+extern Queue *_g_queue;
+namespace {
+void queue_articles(const Quark &group)
+{
+  // FIXME: need to protect with pref
+  FilterInfo filter,ftemp;
+  filter.set_type_aggregate_and();
+  ftemp.set_type_is_unread();
+  filter._aggregates.push_back(ftemp);
+  // FIXME: should be a pref
+  ftemp.set_type_score_ge(9999);
+  filter._aggregates.push_back(ftemp);
+  //ftemp.set_type_cached();
+  //ftemp.set_negate(true);
+  //filter._aggregates.push_back(ftemp);
+  std::auto_ptr<Data::ArticleTree> tree(_g_data->group_get_articles(group,Data::SHOW_ARTICLES,&filter));
+  unsigned long size=tree->size();
+  Data::ArticleTree::articles_t arts;
+  if(size>0)
+  {
+    arts.reserve(size);
+    tree->get_children(Quark(),arts);
+    foreach(Data::ArticleTree::articles_t, arts, it)
+    {
+      const Article *a(*it);
+      tree->get_children(a->message_id,arts);
+    }
+    
+    if(arts.size()>0)
+      foreach(Data::ArticleTree::articles_t, arts, it)
+      {
+        const Article *a(*it);
+        // FIXME: tasks should be at END of queue
+        _g_queue->add_task(new TaskArticle(*_g_data, *_g_data, *a, *_g_cache, *_g_data),Queue::BOTTOM);
+      }
+  }
+}
+}
+
 void
 TaskXOver :: update_work (bool subtract_one_from_nntp_count)
 {
@@ -357,6 +400,8 @@
   else {
     _state.set_completed ();
     set_finished (OK);
+	
+	queue_articles(_group);
   }
 }
 
