Contains definition of class implementing server logic. Doesn't contain any user interface interaction. Exception handling and converting them into messages understandable for caller should be done in boundary objects. Throwing EAssertionFailed should be considered as inadmissibility of state for calling the method. At that state of the server should be kept. Throwing any other exception should be considered as fatalerror. At that state of the server should be brought into initial which was just after start. Sometimes when method can execute the action accroding to its semantics EAssertionFailed can be catched inside it.