diff --git a/lib/modules/Protocols.pmod/LysKOM.pmod/Session.pike b/lib/modules/Protocols.pmod/LysKOM.pmod/Session.pike
index e0d48fa866a868e29a5a6f8c213f8376ad88df5e..178b4c9218599b1c9e279c7dfb3bbda025c419c4 100644
--- a/lib/modules/Protocols.pmod/LysKOM.pmod/Session.pike
+++ b/lib/modules/Protocols.pmod/LysKOM.pmod/Session.pike
@@ -1,4 +1,4 @@
-//  $Id: Session.pike,v 1.10 1999/10/11 08:17:43 js Exp $
+//  $Id: Session.pike,v 1.11 1999/10/17 00:57:54 js Exp $
 //! module Protocols
 //! submodule LysKOM
 //! class Session
@@ -509,21 +509,19 @@ class Membership
   int(0..65535)    added_by;   // new
   object           added_at;   // new
   multiset(string) type;       // new
-  int              position;        // new
+  int              position;   // new
 
   object conf;
   
   object err;
 
-  void create(object mb,int pers)
+  void setup(object mb)
   {
-    person=pers;
-
     last_time_read=mb->last_time_read;
     read_texts=mb->read_texts;
     last_text_read=mb->last_text_read;
     priority=mb->priority;
-    conf=conference(mb->conf_no);
+    conf=Conference(mb->conf_no);
 	 
     if (mb->type)
     {
@@ -535,6 +533,12 @@ class Membership
     }
   }
 
+  void create(object mb,int pers)
+  {
+    person=pers;
+    setup(mb);
+  }
+
   //  FETCHER(unread,ProtocolTypes.TextMapping,_unread,local_to_global,@({conf->no,1,255}))
 
   int number_unread()
@@ -543,8 +547,13 @@ class Membership
       -last_text_read -sizeof(read_texts);
   }
 
-
-  array(Text) _unread_texts;
+  void query_read_texts()
+  {
+//     werror("query_read_texts()\n");
+//     werror("read_texts: %O\n",read_texts);
+    setup(con->query_read_texts(person,conf->no));
+//     werror("read_texts: %O\n",read_texts);
+  }
   
   array(object) get_unread_texts_blocking()
   {
@@ -555,7 +564,7 @@ class Membership
     werror("i: %d  last_text_read: %d\n",i,last_text_read);
     werror("conf: %d  conf->no_of_texts: %d\n",conf->no, conf->no_of_texts);
     if(i > con->get_uconf_stat(conf->no)->highest_local_no)
-      return /*_unread_texts =*/ ({ }) ;
+      return ({ }) ;
 
     /* Get all the global numbers after last-text-read */
     while(1)
@@ -585,7 +594,7 @@ class Membership
       local_to_global -
       mkmapping(read_texts,allocate(sizeof(read_texts)));
 
-    return /*_unread_texts =*/ map( sort(values(unread_numbers)), text );
+    return map( sort(values(unread_numbers)), text );
   }
 
   
@@ -594,7 +603,7 @@ class Membership
     switch (what)
     {
     case "unread_texts":
-      return _unread_texts || get_unread_texts_blocking();
+      return get_unread_texts_blocking();
     case "last_time_read":
     case "read_texts":
     case "last_text_read":
@@ -604,6 +613,7 @@ class Membership
     case "position":
     case "type":
     case "number_unread":
+    case "query_read_texts":
       return ::`[](what);
 
     }
@@ -721,7 +731,7 @@ class Conference
 	 case "error":
 	    return err;
 
-	 case "presentation":
+	    //	 case "presentation":
 	 case "msg_of_day":
 	    waitfor_stat();
 	    return text( (_conf||_confold)[what] );
@@ -741,7 +751,8 @@ class Conference
 	 case "no_of_members":
 	 case "first_local_no":
 	 case "no_of_texts":
-	    waitfor_stat();
+         case "presentation":
+		    waitfor_stat();
 	    return (_conf||_confold)[what];
       }
    }
@@ -858,7 +869,8 @@ object|void _create_text(string textstring,
    if (aux_info)
       error("unimplemented\n");
 
-   if (protlevel<10) call+="_old";
+//    if (protlevel<10)
+     call+="_old";
 
    if (callback)
    {