listener : - runs and listens for connections - on getting one, it fires up a session. to deal with the responses session : ( Imapd) - dispatch each operation to an operator. - deals with information about server - deals with information about current mail store open - deals with authentication state.. getSelectedMailbox(); - selectedMailbox; close(Mailbox mbox) - rely's message to mbox, then sets selectedMailbox to null; selectMailbox(char[] name) // asks depot to getMailbox() // set selected mailbox to it. // returns the selected Mailbox. mailboxReadOnly = true/false - operator: - needs to rely on session for state information - needs to rely on session for current mailstore information depot - global manager of open mailstores Mailbox[] openMailboxes; getMailbox(session, name); Mailbox (eg. an INBOX) referenceCount; // number of instances that are using it.. close() = reduces refernceCount, removes it from depot if down to 0 int firstUnseen // first unseen message int uidValidity() //???? int uidNext() Message = representation of a single message.