The implementation of terminate depends on both the kind of instruction set being implemented and on the implementation language. A byte-code based program can be stopped very easily as there is a main control loop (in the run method), just by setting a terminated flag to true. Stopping an structured program (e.g. the one used in our file server example) is a little more complicated. This is due to recursive interpretation: calls to run in Programs propagate calls to the run method of its components. To stop that program, it is necessary to finish all the nested run calls. Depending on the implementation language it can be done in a way or another. In a language with exceptions, like C++ or Ada, it suffices to raise and propagate an exception in the code of Terminate, catching it in the run code of Program. In languages like C, setjmp can be used in the top-level run method before calling any other run, and longjmp can be used, for the same purpose, in the body of terminate.