public IVideo retrieve(String siteId) {
   VideoTimeStampPair pair = null;
   synchronized (waitingList) {
     pair = waitingList.remove(siteId);
   }
   if (pair == null) return null;
   else return pair.getVideo();
 }
 private void checkTimeout() {
   long curTime = System.currentTimeMillis();
   synchronized (waitingList) {
     Iterator it = waitingList.keySet().iterator();
     while (it.hasNext()) {
       String siteId = (String) it.next();
       VideoTimeStampPair pair = waitingList.get(siteId);
       if (curTime - pair.getTimestamp() > timeout) it.remove();
     }
   }
 }