no message

buko [2002-11-07 00:13:41]
no message
Filename
server/base/BasicChimeEvent.java
server/base/ChimeEvent.java
server/base/ChimeException.java
server/base/EventConstants.java
server/cebs/elvin/ElvinEvent.java
server/cebs/elvin/ElvinEventSystem.java
server/cebs/siena/SienaEvent.java
server/cebs/siena/SienaEventReciever.java
server/cebs/siena/SienaEventSender.java
server/cebs/siena/SienaEventSystem.java
server/cwm/Metadata.java
server/cwm/User.java
server/cwm/WorldManager.java
server/cwm/world/WorldManager.java
server/cwm/world/persist/Cacheable.java
server/cwm/world/persist/ObjectID.java
server/cwm/world/persist/PersistenceService.java
server/cwm/world/persist/PersistenceServiceException.java
server/cwm/world/persist/PersistentObject.java
server/cwm/world/view/DoorView.java
server/cwm/world/view/LocatableWorldObjectView.java
server/cwm/world/view/RoomView.java
server/cwm/world/view/View.java
server/cwm/world/wms/Avatar.java
server/cwm/world/wms/Door.java
server/cwm/world/wms/MetadataWorldObject.java
server/cwm/world/wms/RemoteRoom.java
server/cwm/world/wms/Room.java
server/cwm/world/wms/WorldObject.java
server/scs/ws/UserInfo.java
diff --git a/server/base/BasicChimeEvent.java b/server/base/BasicChimeEvent.java
deleted file mode 100644
index 37c6d82..0000000
--- a/server/base/BasicChimeEvent.java
+++ /dev/null
@@ -1,246 +0,0 @@
-package psl.chime4.server.base;
-
-import org.elvin.je4.Notification;
-
-/**
- * The Event class used internally for the Chime World Server. For now, this
- * is merely a wrapper around the Elvin Notification Event class.
- *
- * @author Azubuko Obele
- * @version 0.1
- **/
-public class BasicChimeEvent implements java.io.Serializable
-{
-   /** internal Elvin object **/
-   private Notification _event;
-
-   /**
-    * Construct a new ChimeEvent object, passing it a Notification object
-    * to initialize it. Only the Chime World Server should ever call this
-    * constructor.
-    **/
-   public BasicChimeEvent(Notification notif)
-   {
-      this._event = notif;
-   }
-
-   /**
-    * Retrieve the underlying Notification object.
-    **/
-   public Notification getUnderlyingNotification()
-   {
-      return _event;
-   }
-
-   /**
-    * Get an array of bytes from the event.
-    *
-    * @param key key string for the event
-    * @return array of bytes mapped to <code>key</code>
-    * @throws IllegalArgumentException
-    *         if <code>key</code> is <code>null</code> or if there is
-    *         no value mapped to <code>key</code>
-    **/
-   public byte[] getBytes(String key)
-   {
-      // check for null
-      if ( key == null )
-      {
-         String msg = "key cannot be null";
-         throw new IllegalArgumentException(msg);
-      }
-
-      return _event.getOpaque(key);
-   }
-
-   /**
-    * Get a double from the event.
-    *
-    * @param key String that the value is mapped to
-    * @return double mapped to <code>key</code>
-    * @throws IllegalArgumentException
-    *         if <code>key</code> is <code>null</code> or if there is
-    *         no value mapped to <code>key</code>
-    **/
-   public double getDouble(String key)
-   {
-      // check for null
-      if ( key == null )
-      {
-         String msg = "key cannot be null";
-         throw new IllegalArgumentException(msg);
-      }
-
-      return _event.getDouble(key);
-   }
-
-   /**
-    * Get an integer from the event.
-    *
-    * @param key String that the value is mapped to
-    * @return int mapped to <code>key</code>
-    * @throws IllegalArgumentException
-    *         if <code>key</code> is <code>null</code> or if there is
-    *         no value mapped to <code>key</code>
-    **/
-   public int getInt(String key)
-   {
-      // check for null
-      if ( key == null )
-      {
-         String msg = "key cannot be null";
-         throw new IllegalArgumentException(msg);
-      }
-
-      return _event.getInt(key);
-   }
-
-   /**
-    * Get a long from the event.
-    *
-    * @param key String that the value is mapped to
-    * @return long mapped to <code>key</code>
-    * @throws IllegalArgumentException
-    *         if <code>key</code> is <code>null</code> or if there is no
-    *         value mapped to <code>key</code>
-    **/
-   public long getLong(String key)
-   {
-      // if check for null
-      if ( key == null )
-      {
-         String msg = "key cannot be null";
-         throw new IllegalArgumentException(msg);
-      }
-
-      return _event.getLong(key);
-   }
-
-   /**
-    * Get a String from the event.
-    *
-    * @param key String that the value is mapped to
-    * @return String value mapped to <code>key</code>
-    * @throws IllegalArgumentException
-    *         if <code>key</code> is <code>null</code> or if there is no
-    *         value mapped to <code>key</code>
-    **/
-   public String getString(String key)
-   {
-      // check for null
-      if ( key == null )
-      {
-         String msg = "key cannot be null";
-         throw new IllegalArgumentException(msg);
-      }
-
-      return _event.getString(key);
-   }
-
-   /**
-    * Add an array of bytes to the event.
-    *
-    * @param key Key to map the object to
-    * @param val byte array to map <code>key</code> to
-    * @throws IllegalArgumentException
-    *         if <code>key</code> or <code>val</code> is <code>null</code>
-    **/
-   public void put(String key, byte[] val)
-   {
-      // check for null
-      if ( (key == null) || (val == null) )
-      {
-         String msg = "no parameter can be null";
-         throw new IllegalArgumentException(msg);
-      }
-
-      _event.put(key, val);
-   }
-
-   /**
-    * Add a double to the event.
-    *
-    * @param key Key to map the value to
-    * @param val double value to add
-    * @throws IllegalArgumentException
-    *         if <code>key</code> is <code>null</code>
-    **/
-   public void put(String key, double val)
-   {
-      // check for null
-      if ( key == null )
-      {
-         String msg = "key cannot be null";
-         throw new IllegalArgumentException(msg);
-      }
-
-      _event.put(key, val);
-   }
-
-   /**
-    * Add an int to the event.
-    *
-    * @param key Key to map the value to
-    * @param val int value to add
-    * @throws IllegalArgumentException
-    *         if <code>key</code> is <code>null</code>
-    **/
-   public void put(String key, int val)
-   {
-      // check for null
-      if ( key == null )
-      {
-         String msg = "key cannot be null";
-         throw new IllegalArgumentException(msg);
-      }
-
-      _event.put(key, val);
-   }
-
-   /**
-    * Add a long value to the event.
-    *
-    * @param key Key to map the value to
-    * @param val long value to add
-    * @throws IllegalArgumentException
-    *         if <code>key</code> is <code>null</code>
-    **/
-   public void put(String key, long val)
-   {
-      // check for null
-      if ( key == null )
-      {
-         String msg = "key cannot be null";
-         throw new IllegalArgumentException(msg);
-      }
-
-      _event.put(key, val);
-   }
-
-   /**
-    * Add a Unicode string value to the event.
-    *
-    * @param key Key to map the value to
-    * @param val long value to add
-    * @throws IllegalArgumentException
-    *         if <code>key</code> is <code>null</code>
-    **/
-   public void put(String key, String val)
-   {
-      // check for null key
-      if ( key == null )
-      {
-         String msg = "key cannot be null";
-         throw new IllegalArgumentException(msg);
-      }
-
-      // check for null value
-      if ( val == null )
-      {
-         _event.put(key, "" );
-      } else
-      {
-         _event.put(key, val);
-      }
-   }
-}
\ No newline at end of file
diff --git a/server/base/ChimeEvent.java b/server/base/ChimeEvent.java
deleted file mode 100644
index 956c184..0000000
--- a/server/base/ChimeEvent.java
+++ /dev/null
@@ -1,118 +0,0 @@
-package psl.chime4.server.base;
-
-/**
- * This interface abstracts the actual type of Event used within the system.
- *
- * This interface exists primarily to make it very easy to change the
- * type of event system used.
- *
- * @author Azubuko Obele
- * @version 0.1
- **/
-public interface ChimeEvent
-{
-   /**
-    * Get an array of bytes from the event.
-    *
-    * @param key key string for the event
-    * @return array of bytes mapped to <code>key</code>
-    * @throws IllegalArgumentException
-    *         if <code>key</code> is <code>null</code> or if there is
-    *         no value mapped to <code>key</code>
-    **/
-   public byte[] getBytes(String key);
-
-   /**
-    * Get a double from the event.
-    *
-    * @param key String that the value is mapped to
-    * @return double mapped to <code>key</code>
-    * @throws IllegalArgumentException
-    *         if <code>key</code> is <code>null</code> or if there is
-    *         no value mapped to <code>key</code>
-    **/
-   public double getDouble(String key);
-
-   /**
-    * Get an integer from the event.
-    *
-    * @param key String that the value is mapped to
-    * @return int mapped to <code>key</code>
-    * @throws IllegalArgumentException
-    *         if <code>key</code> is <code>null</code> or if there is
-    *         no value mapped to <code>key</code>
-    **/
-   public int getInt(String key);
-
-   /**
-    * Get a long from the event.
-    *
-    * @param key String that the value is mapped to
-    * @return long mapped to <code>key</code>
-    * @throws IllegalArgumentException
-    *         if <code>key</code> is <code>null</code> or if there is no
-    *         value mapped to <code>key</code>
-    **/
-   public long getLong(String key);
-
-   /**
-    * Get a String from the event.
-    *
-    * @param key String that the value is mapped to
-    * @return String value mapped to <code>key</code>
-    * @throws IllegalArgumentException
-    *         if <code>key</code> is <code>null</code> or if there is no
-    *         value mapped to <code>key</code>
-    **/
-   public String getString(String key);
-
-   /**
-    * Add an array of bytes to the event.
-    *
-    * @param key Key to map the object to
-    * @param val byte array to map <code>key</code> to
-    * @throws IllegalArgumentException
-    *         if <code>key</code> or <code>val</code> is <code>null</code>
-    **/
-   public void put(String key, byte[] val);
-
-   /**
-    * Add a double to the event.
-    *
-    * @param key Key to map the value to
-    * @param val double value to add
-    * @throws IllegalArgumentException
-    *         if <code>key</code> is <code>null</code>
-    **/
-   public void put(String key, double val);
-
-   /**
-    * Add an int to the event.
-    *
-    * @param key Key to map the value to
-    * @param val int value to add
-    * @throws IllegalArgumentException
-    *         if <code>key</code> is <code>null</code>
-    **/
-   public void put(String key, int val);
-
-   /**
-    * Add a long value to the event.
-    *
-    * @param key Key to map the value to
-    * @param val long value to add
-    * @throws IllegalArgumentException
-    *         if <code>key</code> is <code>null</code>
-    **/
-   public void put(String key, long val);
-
-   /**
-    * Add a Unicode string value to the event.
-    *
-    * @param key Key to map the value to
-    * @param val long value to add
-    * @throws IllegalArgumentException
-    *         if <code>key</code> is <code>null</code>
-    **/
-   public void put(String key, String val);
-}
\ No newline at end of file
diff --git a/server/base/ChimeException.java b/server/base/ChimeException.java
deleted file mode 100644
index df7edf3..0000000
--- a/server/base/ChimeException.java
+++ /dev/null
@@ -1,30 +0,0 @@
-package psl.chime4.server.base;
-
-/**
- * The base class for all exceptions within the Chime server.
- *
- * @author Azubuko Obele
- * @version 0.1
- **/
-public class ChimeException extends Exception
-{
-   public ChimeException()
-   {
-      ; // do nothing
-   }
-
-   public ChimeException(String detail)
-   {
-      super(detail);
-   }
-
-   public ChimeException(String detail, Throwable cause)
-   {
-      super(detail, cause);
-   }
-
-   public ChimeException(Throwable cause)
-   {
-      super(cause);
-   }
-}
\ No newline at end of file
diff --git a/server/base/EventConstants.java b/server/base/EventConstants.java
deleted file mode 100644
index 4655bc1..0000000
--- a/server/base/EventConstants.java
+++ /dev/null
@@ -1,22 +0,0 @@
-package psl.chime4.server.base;
-
-/**
- * Numerous constants used in event processing.
- *
- * @author Azubuko Obele
- * @version 0.1
- **/
-public interface EventConstants
-{
-   /** the many different events and their event codes **/
-
-   // events concerning the VEM
-   public static final int MODEL_CHANGE_REQUEST_EVENT = 5000;
-   public static final int MODEL_UPLOAD_REQUEST_EVENT = 5001;
-   public static final int MODEL_DATA_EVENT = 5002;
-   public static final int MODEL_CHANGED_EVENT = 5003;
-   public static final int MODEL_DOWNLOAD_REQUEST_EVENT = 5004;
-
-   // events concerning the librarian
-   public static final int LIBRARIAN_SEARCH_REQUEST_EVENT = 6000;
-}
\ No newline at end of file
diff --git a/server/cebs/elvin/ElvinEvent.java b/server/cebs/elvin/ElvinEvent.java
deleted file mode 100644
index 8a2ede1..0000000
--- a/server/cebs/elvin/ElvinEvent.java
+++ /dev/null
@@ -1,127 +0,0 @@
-package psl.chime4.server.cebs.elvin;
-
-import psl.chime4.server.cebs.Event;
-
-import org.elvin.je4.Notification;
-
-/**
- * This class wraps Elvin notifications to make them look like Events.
- *
- * @author Azubuko Obele
- * @version 0.1
- **/
-class ElvinEvent extends Event
-{
-    /** the notification object being wrapped **/
-    private Notification notif;
-
-    /**
-     * Construct a new ElvinEvent to wrap a Notification object. This makes
-     * Elvin Notification objects look like Events.
-     *
-     * @param notif Notification object to be adapted
-     * @throws IllegalArgumentException
-     *         if <code>notif</code> is <code>null</code>
-     **/
-    ElvinEvent(Notification notif)
-    {
-        // check for null
-        if (notif == null)
-        {
-            String msg = "notification cannot be null";
-            throw new IllegalArgumentException(msg);
-        }
-
-        this.notif = notif;
-    }
-
-    /**
-     * Construct a new empty Event object.
-     **/
-    ElvinEvent()
-    {
-        notif = new Notification();
-    }
-
-    public boolean containsKey(String key)
-    {
-        return notif.containsKey(key);
-    }
-
-    public void clear()
-    {
-        // though the javadoc API defines such a method, there seems to be
-        // no org.elvin.je4.Notification#clear() method. For now we just
-        // make a new object
-        // notif.clear();
-        notif = new Notification();
-    }
-
-    public int getInteger(String key)
-    {
-        return notif.getInt(key);
-    }
-
-    public long getLong(String key)
-    {
-        return notif.getLong(key);
-    }
-
-    public double getDouble(String key)
-    {
-        return notif.getDouble(key);
-    }
-
-    public String getString(String key)
-    {
-        return notif.getString(key);
-    }
-
-    public byte[] getByteArray(String key)
-    {
-        // though the javadoc API declares such a method, it doesn't seem to
-        // exist in the api
-        // return notif.getBytes(key);
-        return (byte[]) notif.get(key);
-    }
-
-    public void put(String key, int val)
-    {
-        notif.put(key, val);
-    }
-
-    public void put(String key, long val)
-    {
-        notif.put(key, val);
-    }
-
-    public void put(String key, double val)
-    {
-        notif.put(key, val);
-    }
-
-    public void put(String key, String val)
-    {
-        notif.put(key, val);
-    }
-
-    public void put(String key, byte[] val)
-    {
-        notif.put(key, val);
-    }
-
-    public void remove(String key)
-    {
-        notif.remove(key);
-    }
-
-    /**
-     * Get the underlying Notification object.
-     *
-     * @return underlying Notification object.
-     **/
-    Notification getUnderlyingNotification()
-    {
-        return notif;
-    }
-}
\ No newline at end of file
diff --git a/server/cebs/elvin/ElvinEventSystem.java b/server/cebs/elvin/ElvinEventSystem.java
deleted file mode 100644
index afc9776..0000000
--- a/server/cebs/elvin/ElvinEventSystem.java
+++ /dev/null
@@ -1,306 +0,0 @@
-package psl.chime4.server.cebs.elvin;
-
-import psl.chime4.server.cebs.Event;
-import psl.chime4.server.cebs.CebsEventSystem;
-import psl.chime4.server.cebs.CebsException;
-
-import java.util.Map;
-import java.util.HashMap;
-
-import org.elvin.je4.Connection;
-import org.elvin.je4.Producer;
-import org.elvin.je4.Consumer;
-import org.elvin.je4.Notification;
-import org.elvin.je4.ElvinURL;
-import org.elvin.je4.Subscription;
-
-/**
- * An interface to the Elvin event protocol using it as a basic pub/sub
- * system.
- *
- * @note Currently, this class does not perform Subscription caching. Every
- * time a client subscribes and unsubscribes from a topic a new Subscription
- * object is created. This is bad, because each time a client enters and
- * leaves a room it must subscribe/unsubscribe from a topic. This means
- * Subscription objects should be cached. This class could be heavily
- * optimized to reuse Subscription objects as well as perhaps do some other
- * basic optimizations.
- *
- * @author Azubuko Obele
- * @version 0.1
- **/
-public class ElvinEventSystem extends CebsEventSystem
-{
-   /** a map of Consumer objects currently active **/
-   private Map consumerMap = new HashMap();
-
-   /** map of Producer objects currently active **/
-   private Map producerMap = new HashMap();
-
-   /** map for Connection objects to the server **/
-   private Map connectionMap = new HashMap();
-
-   /**
-    * Open a physical connection to an Elvin server.
-    *
-    * @param host the host of the elvin event server
-    * @param port the port of the event server process
-    * @throws IllegalArgumentException
-    *         if <code>host</code> is <code>null</code>
-    * @throws CebsException
-    *         if the connection could not be made
-    * @throws IllegalStateException
-    *         if already connected to the event server
-    **/
-   protected void openRealConnection(String host, int port)
-      throws CebsException
-   {
-      // check for null
-      if (host == null)
-      {
-         String msg = "host cannot be null";
-         throw new IllegalArgumentException(msg);
-      }
-
-      // first make sure we'return not already connected
-      String key = host + ":" + port;
-      if (connectionMap.containsKey(key))
-      {
-         String msg = "already connected to server: " + key;
-         throw new IllegalStateException(msg);
-      }
-
-      try
-      {
-         // turn the host/port into a elvin url
-         ElvinURL url =
-            new ElvinURL("elvin:4.0/tcp,none,xdr/" + host + ":" + port);
-
-         Connection conn = new Connection(url);
-
-         // put it in the map
-         connectionMap.put(key, conn);
-      }
-      catch (Exception e)
-      {
-         String msg = "could not connect to server: " + key;
-         throw new CebsException(msg, e);
-      }
-   }
-
-   /**
-    * Close a physical connection to the Elvin event server. If no connection
-    * exists to the server this method is a No-op.
-    *
-    * @param host host of the event server
-    * @param port port of the event server process
-    * @throws IllegalArgumentException
-    *         if <code>host</code> is <code>null</code>
-    * @throws IllegalStateException
-    *         if no connection to the server exists
-    **/
-   protected void closeRealConnection(String host, int port)
-   {
-      // check for null
-      if (host == null)
-      {
-         String msg = "host cannot be null";
-         throw new IllegalArgumentException(msg);
-      }
-
-      // get the Connection object from the map and close it
-      String key = host + ":" + port;
-      Connection conn = (Connection) connectionMap.get(key);
-
-      // if no connection exists, throw an exception
-      if (conn == null)
-      {
-         String msg = "no connection to server: " + host + ":" + port;
-         throw new IllegalStateException(msg);
-      }
-
-      conn.close();
-
-      // remove a producer or consumer if used
-      producerMap.remove(key);
-      consumerMap.remove(key);
-
-      // remove the connection itself
-      connectionMap.remove(key);
-   }
-
-   /**
-    * Send an Event to the elvin event system.
-    *
-    * @param host  host to send the event to
-    * @param port  port of the event server process
-    * @param topic the topic to publish the event under
-    * @param event the event to send
-    * @throws IllegalArgumentException
-    *         if any parameter is <code>null</code>
-    * @throws IllegalStateException
-    *         if no connection to the server exists
-    * @throws CebsException
-    *         if the exception could not be sent
-    * @throws ClassCastException
-    *         if the event is not an Elvin event
-    **/
-   protected void sendEvent(String host, int port, String topic,
-                            Event event)
-      throws CebsException
-   {
-      // check for null
-      if ((host == null) || (topic == null) || (event == null))
-      {
-         String msg = "no parameter can be null";
-         throw new IllegalArgumentException(msg);
-      }
-
-      // make sure we're connected to the server
-      String connKey = host + ":" + port;
-      Connection conn = (Connection) connectionMap.get(connKey);
-      if (conn == null)
-      {
-         String msg = "no connection to server: " + host + ":" + port;
-         throw new IllegalStateException(msg);
-      }
-
-      try
-      {
-         // see if a producer already exists for this connection
-         if (producerMap.containsKey(connKey))
-         {
-            // retrieve the producer and send the event
-            Producer prod = (Producer) producerMap.get(connKey);
-            prod.notify( ((ElvinEvent) event).getUnderlyingNotification() );
-         } else
-         {
-            // it's the first time sending to the server, need a new producer
-            Producer prod = new Producer(conn);
-            prod.notify(((ElvinEvent) event).getUnderlyingNotification());
-            producerMap.put(connKey, prod);
-         }
-      } catch (Exception e)
-      {
-         String msg = "could not send event to server: " + host + ":" + port;
-         throw new CEBSException(msg, e);
-      }
-   }
-
-   /**
-    * Modify a subscription to an Elvin event server.
-    *
-    * @param host  host of the event server
-    * @param port  port of the event server process
-    * @param topic the topic to subscribe to
-    * @throws IllegalArgumentException
-    *         if <code>host</code> or <code>topic</code> is <code>null</code>
-    * @throws IllegalStateException
-    *         if no connection exists to the server
-    * @throws CEBSException
-    *         if the subscription could not be made
-    **/
-   protected void addSubscription(String host, int port, String topic)
-      throws CEBSException
-   {
-      // check for null
-      if ((host == null) || (topic == null))
-      {
-         String msg = "no paramters can be null";
-         throw new IllegalArgumentException(msg);
-      }
-
-      // make sure connection exists to the server
-      String connKey = host + ":" + port;
-      Connection cxn = (Connection) connectionMap.get(connKey);
-      if (cxn == null)
-      {
-         String msg = "no connection to server: " + host + ":" + port;
-         throw new IllegalStateException(msg);
-      }
-
-      try
-      {
-         // make a new subscription object
-         Subscription sub =
-            new Subscription("xxx.event.topic == '" + topic + "'")   ;
-
-         // add the actual subscription
-         if (consumerMap.containsKey(connKey))
-         {
-            Consumer consumer = (Consumer) consumerMap.get(connKey);
-            consumer.addSubscription(sub);
-         } else
-         {
-            // first time a consumer is being made
-            Consumer consumer = new Consumer(cxn);
-            consumer.addSubscription(sub);
-
-            // now it in the map
-            consumerMap.put(connKey, consumer);
-         }
-      } catch (Exception e)
-      {
-         String msg = "could not send event to: " + host + "," + port;
-         throw new CEBSException(msg, e);
-      }
-   }
-
-   /**
-    * Remove a subscription from the elvin event server.
-    *
-    * @param host  host of the event server
-    * @param port  port of the event server process
-    * @param topic topic to unsubscribe from
-    * @throws IllegalArgumentException
-    *         if <code>host</code> or <code>topic</code> is <code>null</code>
-    * @throws IllegalStateException
-    *         if no connection the server exists
-    * @throws CEBSException
-    *         if the subscription could not be removed
-    **/
-   protected void removeSubscription(String host, int port, String topic)
-      throws CEBSException
-   {
-      // check for null
-      if ((host == null) || (topic == null))
-      {
-         String msg = "no paramter can be null";
-         throw new IllegalArgumentException(msg);
-      }
-
-      // make sure a connection exists to the server
-      String connKey = host + ":" + port;
-      Connection cxn = (Connection) connectionMap.get(connKey);
-      if (cxn == null)
-      {
-         String msg = "no connection exists to server";
-         throw new IllegalStateException(msg);
-      }
-
-      try
-      {
-         // now get the consumer to the connection
-         Consumer consumer = (Consumer) consumerMap.get(connKey);
-
-         // create the subscription and remove it
-         Subscription sub =
-            new Subscription("xxx.event.topic == '" + topic + "'");
-         consumer.removeSubscription(sub);
-      } catch (Exception e)
-      {
-         String msg = "cannot remove subscription";
-         throw new CEBSException(msg, e);
-      }
-   }
-
-   /**
-    * Create an empty Elvin event.
-    *
-    * @return an empty Elvin event.
-    **/
-   public Event createEmptyEvent()
-   {
-      return new ElvinEvent();
-   }
-}
diff --git a/server/cebs/siena/SienaEvent.java b/server/cebs/siena/SienaEvent.java
deleted file mode 100644
index 2da752e..0000000
--- a/server/cebs/siena/SienaEvent.java
+++ /dev/null
@@ -1,126 +0,0 @@
-package psl.chime4.server.cebs.siena;
-
-import psl.chime4.server.cebs.Event;
-
-import siena.Notification;
-import siena.AttributeValue;
-
-/**
- * This class wraps Siena Notification objects to make them look like CEBS
- * Event objects.
- *
- * @author Azubuko Obele
- * @version 0.1
- **/
-class SienaEvent extends Event
-{
-    /** underling Siena notification **/
-    private Notification notif;
-
-    /**
-     * Construct a new SienaEvent to wrap a Siena notification object.
-     *
-     * @param notif Siena notification object to adapt
-     * @throws IllegalArgumentException
-     *         if <code>notif</code> is <code>null</code>
-     **/
-    SienaEvent(Notification notif)
-    {
-        // check for null
-        if ( notif == null )
-        {
-            String msg = "notif cannot be null";
-            throw new IllegalArgumentException(msg);
-        }
-
-        this.notif = notif;
-    }
-
-    /**
-     * Construct an empty SienaEvent object.
-     **/
-    SienaEvent()
-    {
-        notif = new Notification();
-    }
-
-    public boolean containsKey(String key)
-    {
-        return (notif.getAttribute(key) == null);
-    }
-
-    public void clear()
-    {
-        notif.clear();
-    }
-
-    public int getInteger(String key)
-    {
-        AttributeValue val = notif.getAttribute(key);
-        return val.intValue();
-    }
-
-    public long getLong(String key)
-    {
-        AttributeValue val = notif.getAttribute(key);
-        return val.longValue();
-    }
-
-    public double getDouble(String key)
-    {
-        AttributeValue val = notif.getAttribute(key);
-        return val.doubleValue();
-    }
-
-    public String getString(String key)
-    {
-        AttributeValue val = notif.getAttribute(key);
-        return val.stringValue();
-    }
-
-    public byte[] getByteArray(String key)
-    {
-        AttributeValue val = notif.getAttribute(key);
-        return val.byteArrayValue();
-    }
-
-    public void put(String key, int val)
-    {
-        notif.putAttribute(key, val);
-    }
-
-    public void put(String key, long val)
-    {
-        notif.putAttribute(key, val);
-    }
-
-    public void put(String key, double val)
-    {
-        notif.putAttribute(key, val);
-    }
-
-    public void put(String key, String val)
-    {
-        notif.putAttribute(key, val);
-    }
-
-    public void put(String key, byte[] val)
-    {
-        notif.putAttribute(key, val);
-    }
-
-    public void remove(String key)
-    {
-        notif.putAttribute(key, (AttributeValue) null);
-    }
-
-    /**
-     * Get the underlying Siena notification.
-     *
-     * @return underlying Siena Notification object
-     **/
-    Notification getUnderlyingNotification()
-    {
-        return notif;
-    }
-}
\ No newline at end of file
diff --git a/server/cebs/siena/SienaEventReciever.java b/server/cebs/siena/SienaEventReciever.java
deleted file mode 100644
index 77edeab..0000000
--- a/server/cebs/siena/SienaEventReciever.java
+++ /dev/null
@@ -1,164 +0,0 @@
-package psl.chime4.server.cebs.siena;
-
-import psl.chime4.server.cebs.EventReciever;
-import psl.chime4.server.cebs.Event;
-import psl.chime4.server.cebs.CEBSException;
-import psl.chime4.server.cebs.BlockingEventQueue;
-
-import siena.Notifiable;
-import siena.Notification;
-import siena.ThinClient;
-import siena.Filter;
-import siena.Op;
-
-import java.util.Map;
-import java.util.HashMap;
-
-/**
- * An EventReciever for abstracting the mechanism of recieving events over
- * Siena.
- *
- * @author Azubuko Obele
- * @version 0.1
- **/
-class SienaEventReciever extends EventReciever implements Notifiable
-{
-    /** map of connection objects to various servers **/
-    private Map connectionMap = new HashMap();
-
-    /**
-     * Construct a SienaEventReciever attached to a specific blocking queue.
-     *
-     * @param queue the blocking queue to put incoming events on
-     **/
-    SienaEventReciever(BlockingEventQueue queue)
-    {
-        super(queue);
-    }
-
-    /**
-     * Add a subscription to a Siena-ThinClient connection. All subscriptions
-     * are done by filtering events based on the special 'event.topic'
-     * attribute.
-     *
-     * @param topic  the topic to subscribe to
-     * @param server the server managing <code>topic</code>
-     * @throws CEBSException
-     *         if the subscription could not be made
-     **/
-    protected void addSubscription(String topic, String server)
-        throws CEBSException
-    {
-        try
-        {
-            // get the thin client to that server
-            ThinClient client = (ThinClient) connectionMap.get(server);
-
-            // make the Siena subscription
-            Filter sub = new Filter();
-            sub.addConstraint("event.topic", topic);
-
-            // subscribe to the server
-            client.subscribe(sub, this);
-        }
-        catch (Exception e)
-        {
-            String msg = "couldn't add subscription: " + topic + "," + server;
-            throw new CEBSException(msg, e);
-        }
-    }
-
-    /**
-     * Remove a subscription from a Siena-ThinClient connection.
-     *
-     * @param topic  the topic to unsubscribe from
-     * @param server server managing the topic
-     * @throws CEBSException
-     *         if couldn't unsubscribe from <code>topic</code>
-     **/
-    protected void removeSubscription(String topic, String server)
-        throws CEBSException
-    {
-        try
-        {
-            // get the thin client to that server
-            ThinClient client = (ThinClient) connectionMap.get(server);
-
-            // make the Siena subscription
-            Filter sub = new Filter();
-            sub.addConstraint("event.topic", topic);
-
-            // ubsubscribe from the server
-            client.unsubscribe(sub, this);
-        }
-        catch (Exception e)
-        {
-            String msg = "couldn't remove subscription: " + topic + ","
-                + server;
-            throw new CEBSException(msg, e);
-        }
-    }
-
-    /**
-     * Open a real connection to a Siena event server.
-     *
-     * @param server the server to connect to
-     * @throws CEBSException
-     *         if the connection could not be made
-     **/
-    protected void openRealConnection(String server)
-        throws CEBSException
-    {
-        try
-        {
-            // parse the server to a siena url
-            String sienaURL = SienaEventSystem.parseToSienaURL(server);
-
-            // make a new ThinClient to that server
-            ThinClient client = new ThinClient(sienaURL);
-
-            // put it in the connection map
-            connectionMap.put(server, client);
-        }
-        catch (Exception e)
-        {
-            String msg = "couldn't connect to server: " + server;
-            throw new CEBSException(msg, e);
-        }
-    }
-
-    /**
-     * Close the real connection to a Siena event server.
-     *
-     * @param server the server to disconnect from
-     **/
-    protected void closeRealConnection(String server)
-    {
-        // get the client and close it
-        ThinClient client = (ThinClient) connectionMap.get(server);
-        client.shutdown();
-
-        // now remove it from the map
-        connectionMap.remove(server);
-    }
-
-    /**
-     * Called when a Notification is recieved.
-     *
-     * @param notif the Notification recieved
-     **/
-    public void notify(Notification notif)
-    {
-        // wrap it in an event and give it up for processing
-        Event event = new SienaEvent(notif);
-        super.recievedEvent(event);
-    }
-
-    /**
-     * This method is never called.
-     **/
-    public void notify(Notification[] notif)
-    {
-        ; // do nothing
-    }
-}
\ No newline at end of file
diff --git a/server/cebs/siena/SienaEventSender.java b/server/cebs/siena/SienaEventSender.java
deleted file mode 100644
index 5fb969f..0000000
--- a/server/cebs/siena/SienaEventSender.java
+++ /dev/null
@@ -1,99 +0,0 @@
-package psl.chime4.server.cebs.siena;
-
-import psl.chime4.server.cebs.EventSender;
-import psl.chime4.server.cebs.Event;
-import psl.chime4.server.cebs.CEBSException;
-
-import siena.ThinClient;
-import siena.Notification;
-
-import java.util.Map;
-import java.util.HashMap;
-
-/**
- * An EventSender used for sending events over the Siena transport.
- *
- * @author Azubuko Obele
- * @version 0.1
- **/
-class SienaEventSender extends EventSender
-{
-    /** connections to servers mapped to the server they're connected to **/
-    private Map connectionMap = new HashMap();
-
-    /**
-     * Construct a SienaEventSender with the correct source ID.
-     *
-     * @param sourceUID user ID of the entity sending events
-     **/
-    SienaEventSender(int sourceUID)
-    {
-        super(sourceUID);
-    }
-
-    /**
-     * Open a physical connection to a Siena event server.
-     *
-     * @param server the Siena event server to send the event to
-     * @throws CEBSException
-     *         if the connection to the server could not be made
-     **/
-    protected void openRealConnection(String server) throws CEBSException
-    {
-        try
-        {
-            // parse the URL to a siena URL
-            String sienaURL = SienaEventSystem.parseToSienaURL(server);
-
-            // make the thin client
-            ThinClient client = new ThinClient(sienaURL);
-
-            // put it in the connection map
-            connectionMap.put(server, client);
-        }
-        catch (Exception e)
-        {
-            String msg = "couldn't connect to server: " + server;
-            throw new CEBSException(msg, e);
-        }
-    }
-
-    /**
-     * Send an event to the Siena event server.
-     *
-     * @param server the sever to send the event to
-     * @param event the event to send to the server
-     * @throws CEBSException
-     *         if the connection to the server could not be made
-     **/
-    protected void sendEvent(String server, Event event) throws CEBSException
-    {
-        try
-        {
-            // get the connection to the server
-            ThinClient client = (ThinClient) connectionMap.get(server);
-
-            client.publish( ((SienaEvent) event).getUnderlyingNotification() );
-        }
-        catch (Exception e)
-        {
-            String msg = "couldn't send event to server: " + server;
-            throw new CEBSException(msg, e);
-        }
-    }
-
-    /**
-     * Close the real connection to the server.
-     *
-     * @param server Siena event server to disconnect from
-     **/
-    protected void closeRealConnection(String server)
-    {
-        // get the client and shut it down
-        ThinClient client = (ThinClient) connectionMap.get(server);
-        client.shutdown();
-
-        // remove it from the map
-        connectionMap.remove(server);
-    }
-}
\ No newline at end of file
diff --git a/server/cebs/siena/SienaEventSystem.java b/server/cebs/siena/SienaEventSystem.java
deleted file mode 100644
index b6c1df5..0000000
--- a/server/cebs/siena/SienaEventSystem.java
+++ /dev/null
@@ -1,68 +0,0 @@
-package psl.chime4.server.cebs.siena;
-
-import psl.chime4.server.cebs.Event;
-import psl.chime4.server.cebs.EventSystem;
-
-import siena.ThinClient;
-
-import java.util.Map;
-import java.util.HashMap;
-
-/**
- * An EventSystem interface for using the Siena transport system.
- *
- * @author Azubuko Obele
- * @version 0.1
- **/
-public class SienaEventSystem extends EventSystem
-{
-    /**
-     * Construct a new EventSystem interface to Siena.
-     *
-     * @param sourceUID the entity recieving and sending events
-     **/
-    public SienaEventSystem(int sourceUID)
-    {
-        super(sourceUID);
-        super.eventReciever = new SienaEventReciever(super.eventQueue);
-        super.eventSender = new SienaEventSender(super.sourceUID);
-    }
-
-    /**
-     * Parse a cebs address of the form "cebs://[host]:[port]" to a Siena
-     * URL of the form "senp://[host]:[port]".
-     *
-     * @param server cebs address to parse
-     * @return equivalent Siena address
-     * @throws IllegalArgumentException
-     *         if the conversion could not take place
-     **/
-    static String parseToSienaURL(String server)
-    {
-        if ( server == null )
-        {
-            String msg = "server cannot be null";
-            throw new IllegalArgumentException(msg);
-        }
-
-        StringBuffer buf = new StringBuffer(server);
-
-        // remove the first 7 letters
-        buf.delete(0, 6);
-
-        // now prepend the elvin stuff
-        buf.insert(0, "senp://");
-
-        return buf.toString();
-    }
-
-    /**
-     * Create an empty event.
-     *
-     * @return an empty Event object.
-     **/
-    public Event createEmptyEvent()
-    {
-        return new SienaEvent();
-    }
-}
\ No newline at end of file
diff --git a/server/cwm/Metadata.java b/server/cwm/Metadata.java
deleted file mode 100644
index cafddc0..0000000
--- a/server/cwm/Metadata.java
+++ /dev/null
@@ -1,66 +0,0 @@
-package psl.chime4.server.cwm;
-
-import psl.chime4.server.data.ResourceDescriptor;
-
-/**
- * This class represents a piece of Metadata about some object that exists
- * within the system. It might represent metadata about an html file, an
- * mp3 file, or even a real object in meatspace.
- *
- * @author Azubuko Obele
- * @version 0.1
- **/
-public class Metadata
-{
-   /** true if the metadata has been completed **/
-   private boolean completed = false;
-
-   /** the actual piece of metadata **/
-   private ResourceDescriptor resDesc;
-
-   /**
-    * Determine whether a piece of Metadata has been completed. If a Metadata
-    * object has been completed then all possible metadata about the resource
-    * has been discovered and is stored inside the ResourceDescriptor object.
-    * If it's incomplete, only the URI of the Metadata object is known.
-    *
-    * @return <code>true</code> if the metadata is complete else
-    *         <code>false</code>
-    **/
-   public boolean isComplete()
-   {
-      return completed;
-   }
-
-   /**
-    * Set the completion status for a piece of metadata.
-    *
-    * @param complete completion status for the metadata.
-    **/
-   public void setComplete(boolean complete)
-   {
-      this.completed = complete;
-   }
-
-   /**
-    * Get the underlying ResourceDescriptor of the Metadata object. The
-    * ResourceDescriptor actually contains the metadata which describes a
-    * resource.
-    *
-    * @return ResourceDescriptor containing the metadata.
-    **/
-   public ResourceDescriptor getResourceDescriptor()
-   {
-      return resDesc;
-   }
-
-   /**
-    * Set the underlying ResourceDescriptor of the Metadata object.
-    *
-    * @param resDesc ResourceDescriptor containing the metadata
-    **/
-   public void setResourceDescriptor(ResourceDescriptor resDesc)
-   {
-      this.resDesc = resDesc;
-   }
-}
\ No newline at end of file
diff --git a/server/cwm/User.java b/server/cwm/User.java
deleted file mode 100644
index 478984e..0000000
--- a/server/cwm/User.java
+++ /dev/null
@@ -1,62 +0,0 @@
-package psl.chime4.server.cwm;
-
-/**
- * This class represents a User who has logged in to the CHIME world.
- *
- * @author Azubuko Obele
- * @version 0.1
- **/
-public class User extends AbstractPersistentObject
-{
-   /**
-    * The topic that the user is subscribed to on the event server. This is
-    * the topic that events should be published to if you only want this
-    * individual user to recieve them.
-    **/
-   private String topic;
-
-   /** globally unique user-ID of the user **/
-   private int uid;
-
-   /**
-    * Get the individual-topic for the User. Events published to this topic
-    * will only be recieved by the user.
-    *
-    * @return individual-topic for this user
-    **/
-   public String getTopic()
-   {
-      return topic;
-   }
-
-   /**
-    * Set the individual-topic for the User.
-    *
-    * @param topic individual-topic for this User
-    **/
-   public void setTopic(String topic)
-   {
-      this.topic = topic;
-   }
-
-   /**
-    * Get the user-ID for this User. This uid is globally unique and
-    * persistent. This user-ID is defined by the authentication server.
-    *
-    * @return uid for this client
-    **/
-   public int getUID()
-   {
-      return uid;
-   }
-
-   /**
-    * Set the user-ID for this User.
-    *
-    * @param uid User-ID for this client.
-    **/
-   public void setUID(int uid)
-   {
-      this.uid = uid;
-   }
-}
\ No newline at end of file
diff --git a/server/cwm/WorldManager.java b/server/cwm/WorldManager.java
deleted file mode 100644
index 6aef83c..0000000
--- a/server/cwm/WorldManager.java
+++ /dev/null
@@ -1,40 +0,0 @@
-package psl.chime4.server.cwm;
-
-import psl.chime4.server.base.ChimeEvent;
-
-/**
- * This is a Helper method that provides an interface to EventProcessors
- * that need to to communicate and use the WorldManager.
- *
- * @author Azubuko Obele
- * @version 0.1
- **/
-public class WorldManager
-{
-   /**
-    * Get an empty ChimeEvent. This can be used when an EventProcessor must
-    * generate a new Event.
-    *
-    * @return empty ChimeEvent
-    **/
-   public ChimeEvent getEmptyChimeEvent()
-   {
-      // return new ChimeEvent
-
-       return null;
-   }
-
-   /**
-    * Allow an EventProcessor to send an event. This method may perform
-    * network I/O and it therefore may not return for a long time.
-    *
-    * @param event ChimeEvent to send
-    * @param code  Code specifying the type of event from EventConstants
-    * @throws IllegalArgumentException if <code>event</code> is
-    *         <code>null</code>
-    **/
-   public void sendEvent(ChimeEvent event, int code)
-   {
-      // STUB
-   }
-}
\ No newline at end of file
diff --git a/server/cwm/world/WorldManager.java b/server/cwm/world/WorldManager.java
deleted file mode 100644
index 6aef83c..0000000
--- a/server/cwm/world/WorldManager.java
+++ /dev/null
@@ -1,40 +0,0 @@
-package psl.chime4.server.cwm;
-
-import psl.chime4.server.base.ChimeEvent;
-
-/**
- * This is a Helper method that provides an interface to EventProcessors
- * that need to to communicate and use the WorldManager.
- *
- * @author Azubuko Obele
- * @version 0.1
- **/
-public class WorldManager
-{
-   /**
-    * Get an empty ChimeEvent. This can be used when an EventProcessor must
-    * generate a new Event.
-    *
-    * @return empty ChimeEvent
-    **/
-   public ChimeEvent getEmptyChimeEvent()
-   {
-      // return new ChimeEvent
-
-       return null;
-   }
-
-   /**
-    * Allow an EventProcessor to send an event. This method may perform
-    * network I/O and it therefore may not return for a long time.
-    *
-    * @param event ChimeEvent to send
-    * @param code  Code specifying the type of event from EventConstants
-    * @throws IllegalArgumentException if <code>event</code> is
-    *         <code>null</code>
-    **/
-   public void sendEvent(ChimeEvent event, int code)
-   {
-      // STUB
-   }
-}
\ No newline at end of file
diff --git a/server/cwm/world/persist/Cacheable.java b/server/cwm/world/persist/Cacheable.java
deleted file mode 100644
index 2155ddc..0000000
--- a/server/cwm/world/persist/Cacheable.java
+++ /dev/null
@@ -1,16 +0,0 @@
-package psl.chime4.server.cwm.world.persist;
-
-/**
- * A marker interface that defines whether an object can be cached. If speed
- * is absolutely critical and so an object must always remain in memory
- * it may choose not to implement this interface otherwise all other objects
- * should implement this interface.
- *
- * @author Azubuko Obele
- * @version 0.1
- **/
-public interface Cacheable
-{
-}
-
-
diff --git a/server/cwm/world/persist/ObjectID.java b/server/cwm/world/persist/ObjectID.java
deleted file mode 100644
index 28ee678..0000000
--- a/server/cwm/world/persist/ObjectID.java
+++ /dev/null
@@ -1,84 +0,0 @@
-package psl.chime4.server.cwm.world.persist;
-
-/**
- * Represents a unique identifier for an object in the world.
- *
- * @author Azubuko Obele
- * @version 0.1
- **/
-public final class ObjectID
-{
-   /** the integer id **/
-   private int objID;
-
-   /** the type of the object that owns this id **/
-   private Class ownerType;
-
-   /**
-    * Construct the object id.
-    *
-    * @param objID the unique integer id
-    * @param type  Class object that defines the type
-    * @throws IllegalArgumentException
-    *         if <code>type</code> is <code>null</code>
-    **/
-   public ObjectID(int objID, Class type)
-   {
-      if (type == null)
-      {
-         String msg = "type cannot be null";
-         throw new IllegalArgumentException(msg);
-      }
-
-      this.ownerType = type;
-      this.objID = objID;
-   }
-
-   /**
-    * Get the integer object ID.
-    *
-    * @return integer object ID
-    **/
-   public int getID()
-   {
-      return objID;
-   }
-
-   /**
-    * Get the Class object for the object that owns this persistence ID.
-    *
-    * @return Class object for type of object that owns this persistence ID
-    **/
-   public Class getOwnerType()
-   {
-      return ownerType;
-   }
-
-   /**
-    * Two Object IDs are equal if they have same integer id.
-    *
-    * @param o object to test for equality against
-    * @return <code>true</code> if <code>o</code> has the same integer id
-    **/
-   public boolean equals(Object o)
-   {
-      if (o == null)
-      {
-         return false;
-      } else
-      {
-         return ((ObjectID) o).objID == objID;
-      }
-   }
-
-   /**
-    * The hashcode for a persistence ID object is simply its persistence ID
-    * which is guaranteed to be unique for all objects in memory.
-    *
-    * @return the persistence ID of the object
-    **/
-   public int hashCode()
-   {
-      return objID;
-   }
-}
\ No newline at end of file
diff --git a/server/cwm/world/persist/PersistenceService.java b/server/cwm/world/persist/PersistenceService.java
deleted file mode 100644
index 02de8d8..0000000
--- a/server/cwm/world/persist/PersistenceService.java
+++ /dev/null
@@ -1,62 +0,0 @@
-package psl.chime4.server.cwm.world.persist;
-
-/**
- * A PersistenceService is responsible for storing persistent objects between
- * server startup and shutdown. The PersistenceService also acts as an object
- * cache. A PersistenceService will use a CachingStrategy object to determine
- * whether to cache an object.
- *
- * @author Azubuko Obele
- * @version 0.1
- **/
-public abstract class PersistenceService
-{
-   /**
-    * Create a new PersistentObject of the given type.
-    *
-    * @param type type of persistent object to create
-    * @throws IllegalArgumentException
-    *         if <code>type</code> is <code>null</code>
-    * @throws PersistenceServiceException
-    *         if a new object could not be created
-    **/
-   public abstract PersistentObject createPersistentObject(Class type)
-      throws PersistenceServiceException;
-
-   /**
-    * Retrieve a PersistentObject from the persistence layer.
-    *
-    * @param objID persistence id of the object to retrieve
-    * @throws IllegalArgumentException
-    *         if <code>objID</code> is <code>null</code>
-    * @throws PersistenceServiceException
-    *         if the object could not be retrieved
-    **/
-   public abstract PersistentObject
-      loadPersistentObject(ObjectID objID)
-      throws PersistenceServiceException;
-
-   /**
-    * Store an object in the persistence service.
-    *
-    * @param persistObj PersistentObject to store
-    * @throws IllegalArgumentException
-    *         if <code>persistObj</code> is <code>null</code>
-    * @throws PersistenceServiceException
-    *         if the object cannot be stored
-    **/
-   public abstract void storePersistentObject(PersistentObject obj)
-      throws PersistenceServiceException;
-
-   /**
-    * Delete an object from the persistence service.
-    *
-    * @param objID persistence id of the object to delete
-    * @throws IllegalArgumentException
-    *         if <code>objID</code> is <code>null</code>
-    * @throws PersistenceServiceException
-    *         if the object cannot be deleted
-    **/
-   public abstract void deletePersistentObject(ObjectID objID)
-      throws PersistenceServiceException;
-}
\ No newline at end of file
diff --git a/server/cwm/world/persist/PersistenceServiceException.java b/server/cwm/world/persist/PersistenceServiceException.java
deleted file mode 100644
index fa8d744..0000000
--- a/server/cwm/world/persist/PersistenceServiceException.java
+++ /dev/null
@@ -1,30 +0,0 @@
-package psl.chime4.server.cwm.world.persist;
-
-/**
- * General exception for the persistence framework.
- *
- * @author Azubuko Obele
- * @version 0.1
- **/
-public class PersistenceServiceException extends Exception
-{
-   public PersistenceServiceException()
-   {
-      ; // do nothing
-   }
-
-   public PersistenceServiceException(String msg)
-   {
-      super(msg);
-   }
-
-   public PersistenceServiceException(String msg, Throwable cause)
-   {
-      super(msg, cause);
-   }
-
-   public PersistenceServiceException(Throwable cause)
-   {
-      super(cause);
-   }
-}
\ No newline at end of file
diff --git a/server/cwm/world/persist/PersistentObject.java b/server/cwm/world/persist/PersistentObject.java
deleted file mode 100644
index cb7c75c..0000000
--- a/server/cwm/world/persist/PersistentObject.java
+++ /dev/null
@@ -1,60 +0,0 @@
-package psl.chime4.server.cwm.world.persist;
-
-import psl.chime4.server.data.Persistent;
-
-/**
- * An abstract implementation of the Persistent interface.
- *
- * @author Azubuko Obele
- * @version 0.1
- **/
-public abstract class PersistentObject implements Persistent
-{
-   /** the persistence id **/
-   private int persistenceID;
-
-   /** the object ID for this object **/
-   private ObjectID objID;
-
-   public int getPersistenceID()
-   {
-      return persistenceID;
-   }
-
-   public void setPersistenceID(int persistenceID)
-   {
-      this.persistenceID = persistenceID;
-      objID = new ObjectID(persistenceID, getClass());
-   }
-
-   /**
-    * Get the object ID associated with this object.
-    *
-    * @return ObjectID for this object
-    **/
-   public ObjectID getObjectID()
-   {
-      return objID;
-   }
-
-   /**
-    * Set the object ID object associated with this persistent object.
-    *
-    * @param objID the object ID available for this object
-    * @throws IllegalArgumentException
-    *         if <code>objID</code> is <code>null</code>
-    **/
-   public void setObjectID(ObjectID persistID)
-   {
-      // check for null
-      if (objID == null)
-      {
-         String msg = "objID cannot be null";
-         throw new IllegalArgumentException(msg);
-      }
-
-      this.objID = objID;
-   }
-}
-
-
diff --git a/server/cwm/world/view/DoorView.java b/server/cwm/world/view/DoorView.java
deleted file mode 100644
index d7d6556..0000000
--- a/server/cwm/world/view/DoorView.java
+++ /dev/null
@@ -1,33 +0,0 @@
-package psl.chime4.server.cwm.world.view;
-
-/**
- * Represents what a Door looks like in the world.
- *
- * @author Azubuko Obele
- * @version 0.1
- **/
-public class DoorView extends LocatableWorldObjectView
-{
-   /** the thickness of the door **/
-   private int thickness;
-
-   /**
-    * Get the thickness of the door.
-    *
-    * @return thickness of the door
-    **/
-   public int getThickness()
-   {
-      return thickness;
-   }
-
-   /**
-    * Set the thickness of the door.
-    *
-    * @param thickness the thickness of the door
-    **/
-   public void setThickness(int thickness)
-   {
-      this.thickness = thickness;
-   }
-}
\ No newline at end of file
diff --git a/server/cwm/world/view/LocatableWorldObjectView.java b/server/cwm/world/view/LocatableWorldObjectView.java
deleted file mode 100644
index e38ec6e..0000000
--- a/server/cwm/world/view/LocatableWorldObjectView.java
+++ /dev/null
@@ -1,149 +0,0 @@
-package psl.chime4.server.cwm.world.view;
-
-/**
- * This class represents the display of an object in the world that has a
- * location in the world.
- *
- * @author Azubuko Obele
- * @version 0.1
- **/
-public class LocatableWorldObjectView extends View
-{
-   /** x-coord of the object **/
-   private int x;
-
-   /** y-coord of the object **/
-   private int y;
-
-   /** z-coord of the object **/
-   private int z;
-
-   /** width of the object **/
-   private int width;
-
-   /** height of the object **/
-   private int height;
-
-   /** length of the object **/
-   private int length;
-
-   /**
-    * Get the x-coordinate of the object in the world.
-    *
-    * @return x-coordinate of the object in the world
-    **/
-   public int getX()
-   {
-      return x;
-   }
-
-   /**
-    * Set the x-coordinate of the object in the world.
-    *
-    * @param x the x-coordinate of the object
-    **/
-   public void setX(int x)
-   {
-      this.x = x;
-   }
-
-   /**
-    * Get the y-coordinate of the object in the world.
-    *
-    * @return y-coordinate of the object
-    **/
-   public int getY()
-   {
-      return y;
-   }
-
-   /**
-    * Set the y-coordinate of the object in the world.
-    *
-    * @param y the y-coordinate of the object
-    **/
-   public void setY(int y)
-   {
-      this.y = y;
-   }
-
-   /**
-    * Get the z-coordinate of the object in the world.
-    *
-    * @return z the z-coordinate of the object
-    **/
-   public int getZ()
-   {
-      return z;
-   }
-
-   /**
-    * Set the z-coordinate of the object in the world.
-    *
-    * @param z z-coordinate of the object
-    **/
-   public void setZ(int z)
-   {
-      this.z = z;
-   }
-
-   /**
-    * Get the width of the object in the world.
-    *
-    * @return the width of the object in the world
-    **/
-   public int getWidth()
-   {
-      return width;
-   }
-
-   /**
-    * Set the width of the object in the world.
-    *
-    * @param width the width of the object
-    **/
-   public void setWidth(int width)
-   {
-      this.width = width;
-   }
-
-   /**
-    * Get the height of the object in the world.
-    *
-    * @return the height of the object
-    **/
-   public int getHeight()
-   {
-      return height;
-   }
-
-   /**
-    * Set the height of the object in the world.
-    *
-    * @param height the height of the object
-    **/
-   public void setHeight(int height)
-   {
-      this.height = height;
-   }
-
-   /**
-    * Get the length of the room.
-    *
-    *@return length of the room
-    **/
-   public int getLength()
-   {
-      return length;
-   }
-
-   /**
-    * Set the length of the room.
-    *
-    * @param length the length of the room
-    **/
-   public void setLength(int length)
-   {
-      this.length = length;
-   }
-}
diff --git a/server/cwm/world/view/RoomView.java b/server/cwm/world/view/RoomView.java
deleted file mode 100644
index 0b6f6ae..0000000
--- a/server/cwm/world/view/RoomView.java
+++ /dev/null
@@ -1,221 +0,0 @@
-package psl.chime4.server.cwm.world.view;
-
-import psl.chime4.server.cwm.world.persist.ObjectID;
-
-import java.util.Set;
-import java.util.HashSet;
-import java.util.Iterator;
-import java.util.Collections;
-
-/**
- * Represents the appearance of a room.
- *
- * @author Azubuko Obele
- * @version 0.1
- **/
-public class RoomView extends View
-{
-   /** the width of the room **/
-   private int width;
-
-   /** the height of the room **/
-   private int height;
-
-   /** the length of the room **/
-   private int length;
-
-   /** the set of door views in the room **/
-   private Set doorViews;
-
-   /** set of views of objects in the room **/
-   private Set contentsViews;
-
-   /**
-    * Get the width of the room.
-    *
-    * @return the width of the room
-    **/
-   public int getWidth()
-   {
-      return width;
-   }
-
-   /**
-    * Set the width of the room.
-    *
-    * @param width the width of the room
-    **/
-   public void setWidth(int width)
-   {
-      this.width = width;
-   }
-
-   /**
-    * Get the height of the room.
-    *
-    * @return the height of the room
-    **/
-   public int getHeight()
-   {
-      return height;
-   }
-
-   /**
-    * Set the height of the room.
-    *
-    * @param height the height of the room
-    **/
-   public void setHeight(int height)
-   {
-      this.height = height;
-   }
-
-   /**
-    * Get the length of the room.
-    *
-    * @return the length of the room
-    **/
-   public int getLength()
-   {
-      return length;
-   }
-
-   /**
-    * Set the length of the room.
-    *
-    * @param length the length of the room
-    **/
-   public void setLength(int length)
-   {
-      this.length = length;
-   }
-
-   /**
-    * Add a view of a door that leads from this room to another.
-    *
-    * @param doorView object id of the door view to add to the room
-    * @throws IllegalArgumentException
-    *         if <code>doorView</code> is not owned by a {@link DoorView}
-    **/
-   public void addDoorView(ObjectID doorView)
-   {
-      if (doorView != null)
-      {
-         if (doorView.getOwnerType() != DoorView.class)
-         {
-            String msg = "only door views can be added to rooms";
-            throw new IllegalArgumentException(msg);
-         }
-
-         if (doorViews == null)
-         {
-            doorViews = new HashSet();
-         }
-
-         doorViews.add(doorView);
-      }
-   }
-
-   /**
-    * Remove a given view of a door from the room.
-    *
-    * @param doorView object id of the door view to remove from the room
-    **/
-   public void removeDoorView(ObjectID doorView)
-   {
-      if (doorView != null)
-      {
-         if (doorViews != null)
-         {
-            doorViews.remove(doorView);
-
-            // if there are no more door views, null it
-            if (doorViews.isEmpty())
-            {
-               doorViews = null;
-            }
-         }
-      }
-   }
-
-   /**
-    * Get an iterator over all the door views in the room.
-    *
-    * @return iterator over all the views of doors in the room
-    **/
-   public Iterator doorViews()
-   {
-      if (doorViews == null)
-      {
-         return Collections.EMPTY_SET.iterator();
-      } else
-      {
-         return doorViews.iterator();
-      }
-   }
-
-   /**
-    * Add a view for an object that's in the room.
-    *
-    * @param view object id of a view of an object that's in the room
-    * @throws IllegalArgumentException
-    *         if <code>view</code> doesn't belong to an object of type
-    *         {@link View}
-    **/
-   public void addContentView(ObjectID view)
-   {
-      if (view != null)
-      {
-         if (view.getOwnerType() != View.class)
-         {
-            String msg = "only views can be added to rooms";
-            throw new IllegalArgumentException(msg);
-         }
-
-         if (contentsViews == null)
-         {
-            contentsViews = new HashSet();
-         }
-
-         contentsViews.add(view);
-      }
-   }
-
-   /**
-    * Remove the view of an object from inside the room.
-    *
-    * @param view view of an object that's inside the room
-    **/
-   public void removeContentView(View view)
-   {
-      if (view != null)
-      {
-         if (contentsViews != null)
-         {
-            contentsViews.remove(view);
-
-            // if it's empty, null it
-            if (contentsViews.isEmpty())
-            {
-               contentsViews = null;
-            }
-         }
-      }
-   }
-
-   /**
-    * Get an iterator over all the views of all the objects in the room.
-    *
-    * @return iterator over the views in the room.
-    **/
-   public Iterator contentViews()
-   {
-      if (contentsViews == null)
-      {
-         return Collections.EMPTY_SET.iterator();
-      } else
-      {
-         return contentsViews.iterator();
-      }
-   }
-}
\ No newline at end of file
diff --git a/server/cwm/world/view/View.java b/server/cwm/world/view/View.java
deleted file mode 100644
index ef6b4c2..0000000
--- a/server/cwm/world/view/View.java
+++ /dev/null
@@ -1,74 +0,0 @@
-package psl.chime4.server.cwm.world.view;
-
-import psl.chime4.server.cwm.world.persist.PersistentObject;
-import psl.chime4.server.cwm.world.persist.Cacheable;
-import psl.chime4.server.cwm.world.persist.ObjectID;
-
-import psl.chime4.server.cwm.world.wms.WorldObject;
-
-import java.io.Serializable;
-
-/**
- * A View represents how an object looks in the world.
- *
- * @author Azubuko Obele
- * @version 0.1
- **/
-public abstract class View extends PersistentObject
-   implements Cacheable, Serializable
-{
-   /** uri defining the view's model file **/
-   private String modelURI;
-
-   /** the id of the world object the view is displaying **/
-   private ObjectID worldObject;
-
-   /**
-    * Get the model URI associated with this view.
-    *
-    * @return model URI associated with this file or <code>null</code>
-    **/
-   public String getModelURI()
-   {
-      return modelURI;
-   }
-
-   /**
-    * Set the model URI associated with this view.
-    *
-    * @param modelURI modelURI to associate with this file
-    **/
-   public void setModelURI(String modelURI)
-   {
-      this.modelURI = modelURI;
-   }
-
-   /**
-    * Get the id of the WorldObject associated with this view.
-    *
-    * @return object id of the world object owned by this view
-    **/
-   public ObjectID getWorldObject()
-   {
-      return worldObject;
-   }
-
-   /**
-    * Set the WorldObject associated with this view.
-    *
-    * @param worldObj id of the WorldObject this view will display
-    * @throws IllegalArgumentException
-    *         if <code>worldObj</code> is not owned by a world object
-    **/
-   public void setWorldObject(ObjectID worldObj)
-   {
-      if ((worldObj != null) &&
-          (worldObj.getOwnerType() != WorldObject.class))
-      {
-         String msg = "views can only be applied to world objects";
-         throw new IllegalArgumentException(msg);
-      }
-
-      this.worldObject = worldObj;
-   }
-}
\ No newline at end of file
diff --git a/server/cwm/world/wms/Avatar.java b/server/cwm/world/wms/Avatar.java
deleted file mode 100644
index b985e73..0000000
--- a/server/cwm/world/wms/Avatar.java
+++ /dev/null
@@ -1,44 +0,0 @@
-package psl.chime4.server.cwm.world.wms;
-
-import psl.chime4.server.cwm.world.persist.ObjectID;
-
-/**
- * Represents an avatar in the world. An avatar is an object that can move
- * around the world and initiate actions.
- *
- * @author Azubuko Obele
- * @version 0.1
- **/
-public class Avatar extends WorldObject
-{
-   /** id of the room this avatar is in **/
-   private ObjectID currentLocation;
-
-   /**
-    * Get the ID of the room the avatar is currently in.
-    *
-    * @return id of the room the avatar is currently in
-    **/
-   public ObjectID getCurrentLocation()
-   {
-      return currentLocation;
-   }
-
-   /**
-    * Set the id of the room that the avatar is currently in.
-    *
-    * @param loc id of the room that the avatar is currently in
-    * @throws IllegalArgumentException
-    *         if <code>loc</code> is now owned by a Room
-    **/
-   public void setCurrentLocation(ObjectID loc)
-   {
-      if ((loc != null) && (loc.getOwnerType() != Room.class))
-      {
-         String msg = "avatars can only exist in rooms";
-         throw new IllegalArgumentException(msg);
-      }
-
-      this.currentLocation = loc;
-   }
-}
\ No newline at end of file
diff --git a/server/cwm/world/wms/Door.java b/server/cwm/world/wms/Door.java
deleted file mode 100644
index 5689427..0000000
--- a/server/cwm/world/wms/Door.java
+++ /dev/null
@@ -1,78 +0,0 @@
-package psl.chime4.server.cwm.world.wms;
-
-import psl.chime4.server.cwm.world.persist.ObjectID;
-
-/**
- * A door represents a connection from one room to another room.
- *
- * @author Azubuko Obele
- * @version 0.2
- **/
-public class Door extends WorldObject
-{
-   /** object id of the source room **/
-   private ObjectID sourceRoom;
-
-   /** object id of the destination room **/
-   private ObjectID destinationRoom;
-
-   /**
-    * Get the object id of the room this door leads from.
-    *
-    * @return object id that this door leads from or <code>null</code>
-    **/
-   public ObjectID getSourceRoom()
-   {
-      return sourceRoom;
-   }
-
-   /**
-    * Set the object id of the room that this door leads from.
-    *
-    * @param objID object id of the room that this door leads from
-    * @throws IllegalArgumentException
-    *         if <code>objID</code> does not belong to an object of
-              type {@link Room}
-    **/
-   public void setSourceRoom(ObjectID objID)
-   {
-      // check for type compatibility
-      if ((objID != null) && (objID.getOwnerType() != Room.class))
-      {
-         String msg = "only objects of type room can be door sources";
-         throw new IllegalArgumentException(msg);
-      }
-
-      this.sourceRoom = objID;
-   }
-
-   /**
-    * Get the object id of the room this door leads to.
-    *
-    * @return object id of the room this door leads to
-    **/
-   public ObjectID getDestinationRoom()
-   {
-      return destinationRoom;
-   }
-
-   /**
-    * Set the object id of the room that this door leads to.
-    *
-    * @param objID object id of the room this door leads to
-    * @throws IllegalArgumentException
-    *         if <code>objID</code> does not lead to an object of
-    *         type {@link Room}
-    **/
-   public void setDestinationRoom(ObjectID objID)
-   {
-      if ((objID != null) && (objID.getOwnerType() != Room.class))
-      {
-         String msg = "doors can only lead to rooms";
-         throw new IllegalArgumentException(msg);
-      }
-
-      this.destinationRoom = objID;
-   }
-}
-
diff --git a/server/cwm/world/wms/MetadataWorldObject.java b/server/cwm/world/wms/MetadataWorldObject.java
deleted file mode 100644
index 9f55857..0000000
--- a/server/cwm/world/wms/MetadataWorldObject.java
+++ /dev/null
@@ -1,44 +0,0 @@
-package psl.chime4.server.cwm.world.wms;
-
-import psl.chime4.server.cwm.world.persist.ObjectID;
-
-/**
- * A MetadataWorldObject is an object that represents a piece of metadata
- * in the world.
- *
- * @author Azubuko Obele
- * @version 0.1
- **/
-public class MetadataWorldObject extends WorldObject
-{
-   /** piece of metadata backed by this object **/
-   private ObjectID mData;
-
-   /**
-    * Get the object id of the piece of metadata.
-    *
-    * @return object id of the metadata backing this metadata
-    **/
-   public ObjectID getMetadata()
-   {
-      return mData;
-   }
-
-   /**
-    * Set the object id of the piece of metadata backing this world object.
-    *
-    * @param mData id of the metadata backing this service
-    * @throws IllegalArgumentException
-    *         if <code>mData</code> is not owned by a Metadata
-    **/
-   public void setMetadata(ObjectID objID)
-   {
-      if ((objID != null) && (objID.getOwnerType() != Metadata.class))
-      {
-         String msg = "object id must be owned by metadata";
-         throw new IllegalArgumentException(msg);
-      }
-
-      this.mData = objID;
-   }
-}
\ No newline at end of file
diff --git a/server/cwm/world/wms/RemoteRoom.java b/server/cwm/world/wms/RemoteRoom.java
deleted file mode 100644
index b540247..0000000
--- a/server/cwm/world/wms/RemoteRoom.java
+++ /dev/null
@@ -1,81 +0,0 @@
-package psl.chime4.server.cwm.world.wms;
-
-/**
- * A RemoteRoom is a room that resides on a remote server. When the user
- * enters a remote room a client handoff is initiated behind the screens.
- *
- * @author Azubuko Obele
- * @version 0.1
- **/
-public class RemoteRoom extends Room
-{
-   /** host of the event server **/
-   private String host;
-
-   /** port of the event server **/
-   private int port;
-
-   /** topic the remote server is listening to **/
-   private String topic;
-
-   /**
-    * Get the host of the event server of the remote server hosting this
-    * room.
-    *
-    * @return host of the event server of the remote server
-    **/
-   public String getHost()
-   {
-      return host;
-   }
-
-   /**
-    * Set the host of the event server of the remote server.
-    *
-    * @param host host of the event server of the remote server
-    **/
-   public void setHost(String host)
-   {
-      this.host = host;
-   }
-
-   /**
-    * Get the port of the event server of the remote server.
-    *
-    * @return port of the event server of the remote server
-    **/
-   public int getPort()
-   {
-      return port;
-   }
-
-   /**
-    * Set the port of the event server of the remote server.
-    *
-    * @param port port of the event server of the remote server
-    **/
-   public void setPort(int port)
-   {
-      this.port = port;
-   }
-
-   /**
-    * Get the topic of the remote world server on the remote event server.
-    *
-    * @return topic the remote world server is listening to
-    **/
-   public String getTopic()
-   {
-      return topic;
-   }
-
-   /**
-    * Set the topic that the remote world server is listening to.
-    *
-    * @param topic the topic that the remote world server is listening to
-    **/
-   public void setTopic(String topic)
-   {
-      this.topic = topic;
-   }
-}
diff --git a/server/cwm/world/wms/Room.java b/server/cwm/world/wms/Room.java
deleted file mode 100644
index fd1ffe6..0000000
--- a/server/cwm/world/wms/Room.java
+++ /dev/null
@@ -1,149 +0,0 @@
-package psl.chime4.server.cwm.world.wms;
-
-import psl.chime4.server.cwm.world.persist.ObjectID;
-
-import java.util.Set;
-import java.util.HashSet;
-import java.util.Iterator;
-import java.util.Collections;
-
-/**
- * Represents a Room in the world. A Room is an object that can contain other
- * objects as well as doors.
- *
- * @author Azubuko Obele
- * @version 0.1
- **/
-public class Room extends MetadataWorldObject
-{
-   /** set of doors in the room **/
-   private Set doors;
-
-   /** set of objects in the room **/
-   private Set contents;
-
-   /** id of the metadata backing this room **/
-   private ObjectID mdata;
-
-   /**
-    * Add a WorldObject to the contents of this room.
-    *
-    * @param wObjID id of a world object
-    * @throws IllegalArgumentException
-    *         if <code>wObjID</code> is not owned by a WorldObject
-    **/
-   public void addContent(ObjectID wObjID)
-   {
-      if (wObjID != null)
-      {
-         if (wObjID.getOwnerType() != WorldObject.class)
-         {
-            String msg = "can only add world objects to room";
-            throw new IllegalArgumentException(msg);
-         }
-
-         if (contents == null)
-         {
-            contents = new HashSet();
-         }
-
-         contents.add(wObjID);
-      }
-   }
-
-   /**
-    * Remove a WorldObject from the contents of this room.
-    *
-    * @param wObjID object id of the world object to remove
-    **/
-   public void removeContent(ObjectID wObjID)
-   {
-      if ((wObjID != null) && (contents != null))
-      {
-         contents.remove(wObjID);
-
-         // null the contents if the last contents was gone
-         if (contents.isEmpty())
-         {
-            contents = null;
-         }
-      }
-   }
-
-   /**
-    * Return an iterator over the contents of this room.
-    *
-    * @return Iterator over contents of this room
-    **/
-   public Iterator contents()
-   {
-      if (contents == null)
-      {
-         return Collections.EMPTY_SET.iterator();
-      } else
-      {
-         return contents.iterator();
-      }
-   }
-
-   /**
-    * Add a door to this room.
-    *
-    * @param doorID object id of the door in this room
-    * @throws IllegalArgumentException
-    *         if <code>doorID</code> is not owned by a door
-    **/
-   public void addDoor(ObjectID doorID)
-   {
-      if (doorID != null)
-      {
-         if (doorID.getOwnerType() != Door.class)
-         {
-            String msg = "only doors can be added to rooms";
-            throw new IllegalArgumentException(msg);
-         }
-
-         if (doors == null)
-         {
-            doors = new HashSet();
-         }
-
-         doors.add(doorID);
-      }
-   }
-
-   /**
-    * Remove a door from this room.
-    *
-    * @param doorID object id of the door to remove from this room
-    **/
-   public void removeDoor(ObjectID doorID)
-   {
-      if ((doorID != null) && (doors != null))
-      {
-         doors.remove(doorID);
-
-         // null it if empty
-         if (doors.isEmpty())
-         {
-            doors = null;
-         }
-      }
-   }
-
-   /**
-    * Return an iterator over all the doors in this room.
-    *
-    * @return iterator over all the doors in the room
-    **/
-   public Iterator doors()
-   {
-      if (doors == null)
-      {
-         return Collections.EMPTY_SET.iterator();
-      } else
-      {
-         return doors.iterator();
-      }
-   }
-}
\ No newline at end of file
diff --git a/server/cwm/world/wms/WorldObject.java b/server/cwm/world/wms/WorldObject.java
deleted file mode 100644
index 37947b1..0000000
--- a/server/cwm/world/wms/WorldObject.java
+++ /dev/null
@@ -1,54 +0,0 @@
-package psl.chime4.server.cwm.world.wms;
-
-import psl.chime4.server.cwm.world.persist.PersistentObject;
-import psl.chime4.server.cwm.world.persist.Cacheable;
-import psl.chime4.server.cwm.world.persist.ObjectID;
-
-import java.io.Serializable;
-
-/**
- * A WorldObject represents an actual object that exists in the world. This
- * might be a Room, Door, User or a piece of metadata.
- *
- * @author Azubuko Obele
- * @version 0.1
- **/
-public abstract class WorldObject extends PersistentObject
-   implements Cacheable, Serializable
-{
-   /**
-    * Get a unique integer describing this instance.
-    *
-    * @return instance-ID for this object
-    **/
-   public int getInstanceID()
-   {
-      return super.getPersistenceID();
-   }
-
-   /**
-    * Two WorldObjects are equal if they have the same object id.
-    *
-    * @param o object to test for equality against
-    * @return <code>true</code> if the objects have the same object
-    *         id else <code>false</code>
-    **/
-   public boolean equals(Object o)
-   {
-      ObjectID objID = ((PersistentObject) o).getObjectID();
-      return super.getObjectID().equals(objID);
-   }
-
-   /**
-    * Hashcode of an object is it's persistence id.
-    *
-    * @return persistence id of the object
-    **/
-   public int hashCode()
-   {
-      return super.getObjectID().getID();
-   }
-}
-
-
-
diff --git a/server/scs/ws/UserInfo.java b/server/scs/ws/UserInfo.java
index ed58584..3724b4a 100644
--- a/server/scs/ws/UserInfo.java
+++ b/server/scs/ws/UserInfo.java
@@ -15,7 +15,8 @@ public class UserInfo extends PersistentObject
 {
    /** authentication status for the user **/
    public boolean authenticated;
-   private int deleteThis;
+
+
    /** globally unique for this user **/
    public String username;