Index: doc/uC++toCFA/uC++toCFA.tex
===================================================================
--- doc/uC++toCFA/uC++toCFA.tex	(revision 7e943e1276922a09c13b8d5317d42c0e709b05d0)
+++ doc/uC++toCFA/uC++toCFA.tex	(revision 0cb34792deaeef8c8e2053b3b0c6d350f4dbad00)
@@ -11,6 +11,6 @@
 %% Created On       : Wed Apr  6 14:53:29 2016
 %% Last Modified By : Peter A. Buhr
-%% Last Modified On : Fri Nov  8 08:22:25 2024
-%% Update Count     : 6107
+%% Last Modified On : Mon Nov 11 21:51:39 2024
+%% Update Count     : 6144
 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
 
@@ -498,5 +498,5 @@
 
 
-\section{Coroutines}
+\section{Coroutine}
 
 \begin{cquote}
@@ -591,6 +591,6 @@
 
 struct StrMsg : @public uActor::Message@ {
+
 	const char * val; // string message
-
 
 	StrMsg( const char * val ) :
@@ -600,15 +600,21 @@
 _Actor Hello { ${\color{red}\LstCommentStyle{// : public uActor}}$
 	Allocation receive( Message & msg ) {
-		Case( StrMsg, msg ) { // discriminate
+		Case( @StartMsg@, msg ) { // discriminate
+
+		} else Case( StrMsg, msg ) {
 			osacquire( cout ) << msg_d->val << endl;
-		};
-		return Delete;	// delete after use
+
+		} else Case( @StopMsg@, msg )
+			return Delete;  // delete actor
+		return Nodelete;  // reuse actor
 	}
 };
 int main() {
 	@uActor::start();@ // start actor system
-	*new Hello() | *new StrMsg( "hello" );
-	*new Hello() | *new StrMsg( "bonjour" );
-	@uActor::stop();@  // wait for all actors to terminate
+	*new Hello() | uActor::startMsg
+		| *new StrMsg( "hello" ) | uActor::stopMsg;
+	*new Hello() | uActor::startMsg
+		| *new StrMsg( "bonjour" ) | uActor::stopMsg;
+	@uActor::stop();@  // wait for actors to terminate
 }
 \end{uC++}
@@ -623,28 +629,34 @@
 	const char * val; // string message
 };
-void ?{}( StrMsg & msg, char * str ) {
+void ?{}( StrMsg & msg, const char * str ) {
+	@set_allocation( msg, Delete );@ // delete after use
 	msg.val = str;
-	@set_allocation( msg, Delete );@ // delete after use
-}
-struct Hello {
-	@inline actor;@ // derived actor
-};
+}
+struct Hello { @inline actor;@ }; // derived actor
+allocation receive( Hello & receiver, @start_msg_t@ & ) {
+	return Nodelete;
+}
 allocation receive( Hello & receiver, StrMsg & msg ) {
 	mutex( sout ) sout | msg.val;
-	return Delete;	// delete after use
+	return Nodelete;  // reuse actor
+}
+allocation receive( Hello & receiver, @stop_msg_t@ & ) {
+	return Delete;  // delete actor
 }
 
 int main() {
-	@start_actor_system();@  // start actor system
-	*(Hello *)new() | *(StrMsg *)new( "hello" );
-	*(Hello *)new() | *(StrMsg *)new( "bonjour" );
-	@stop_actor_system();@  // wait for all actors to terminate
-}
-\end{cfa}
-\end{tabular}
-\end{cquote}
-
-
-\section{Threads}
+	@actor_start();@  // start actor system
+	*(Hello *)new() | start_msg
+		| *(StrMsg *)new( "hello" ) | stop_msg;
+	*(Hello *)new() | start_msg
+		| *(StrMsg *)new( "bonjour" ) | stop_msg;
+	@actor_stop();@  // wait for actors to terminate
+}
+\end{cfa}
+\end{tabular}
+\end{cquote}
+
+
+\section{Thread}
 
 \begin{cquote}
@@ -710,5 +722,5 @@
 
 
-\section{Monitors}
+\section{Monitor}
 
 Internal Scheduling
@@ -776,5 +788,7 @@
 \end{tabular}
 \end{cquote}
-\enlargethispage{1000pt}
+
+\newpage
+
 External Scheduling
 \begin{cquote}
