Hi, I'm trying to figure out how to design a chat-server using Cells. This doesn't work, but this is what I've come up with: (defpackage CellsChat (:use :cl :cells)) (in-package :CellsChat) (defparameter *newline* (princ-to-string #\Newline)) (defmodel CellsChat () ((username :cell nil :accessor username-of :initarg :username :initform (error "CellsChat needs a `username'.")) (text-box :accessor text-box-of :allocation :class :initform (c-in "")) (participants :cell nil :accessor participants-of :allocation :class :initform nil))) (defmethod initialize-instance :after ((chat CellsChat) &key) ;; New user joins the conversation. (push chat (participants-of chat)) ;; New user wants to see what's been going on recently. (updateTextBox chat)) (defmethod updateTextBox ((chat CellsChat)) ;; Show conversation till now. (format t "(text-box-of ~A): '~A'~%" (username-of chat) (text-box-of chat))) (defobserver text-box ((chat CellsChat)) ;; Update interface of each participant whenever ;; `text-box' changes (for whatever reason). (dolist (participant (participants-of chat)) (updateTextBox participant))) (defmethod say ((chat CellsChat) (what string)) (setf (text-box-of chat) (concatenate 'string (text-box-of chat) (username-of chat) ": " what *newline*))) (defmethod part ((chat CellsChat)) ;; User leaves the conversation. (setf (participants-of chat) (delete chat (participants-of chat)))) -- Mvh, Lars Rune Nøstdal http://lars.nostdal.org/