Index: tests/exceptions/hotpotato.cfa
===================================================================
--- tests/exceptions/hotpotato.cfa	(revision fd775ae85b3364a2f91fb35d504516f1b1ca8bc9)
+++ tests/exceptions/hotpotato.cfa	(revision 26be85438f73872e884a2eaebfd4228b2fb121f4)
@@ -35,5 +35,5 @@
 ExceptionDecl( Explode );
 ExceptionDecl( Terminate, Player * victim; );
-ExceptionDecl( Election, Player * player; );
+ExceptionDecl( Election );
 ExceptionDecl( cmd_error ); // convert(...) throws out_of_range or invalid_argument
 
@@ -47,5 +47,5 @@
 void countdown( Potato & potato ) with(potato) {
 	timer += 1;
-	if ( timer == deadline ) throw ExceptionInst( Explode );
+	if ( timer == deadline ) throwResume ExceptionInst( Explode );
 } // countdown
 
@@ -86,5 +86,4 @@
 void main( Player & player ) with(player) {
     suspend;									// return immediately after establishing starter
-    
 	try {
         for ( ;; ) {
@@ -93,5 +92,5 @@
             if ( partner[LEFT] == &player ) {			// stop when only one player
                 sout | id | " wins the Match!";
-                break;
+                return;
             } // exit
             
@@ -112,17 +111,13 @@
 		sout | "election";
 		sout | " -> " | id | nonl;
-		if ( id > getId( *election->player ) ) election->player = &player; // set umpire to highest id so far
+		if ( id > getId( umpire ) ) &umpire = &player; // set umpire to highest id so far
 		vote( *partner[RIGHT], *election );
-	} catch ( Explode * ) {
+	} catchResume ( Explode * ) {
         sout | id | " is eliminated";
         if ( &player == &umpire ) {
             id = -1;					// remove from election
-            vote( *partner[RIGHT], ExceptionInst( Election, &player ) );		// start election
-            try {
-                poll(); 
-            } catchResume( Election * election ) {
-                &umpire = election->player;
-                sout | " : umpire " | getId( *election->player );
-            }
+            vote( *partner[RIGHT], ExceptionInst( Election ) );		// start election
+            try { poll(); } catchResume( Election * election ) {} // handle end of election
+            sout | " : umpire " | getId( umpire );
         } // if
         resumeAt( umpire, ExceptionInst( Terminate, &player ) );
Index: tests/exceptions/hotpotato_checked.cfa
===================================================================
--- tests/exceptions/hotpotato_checked.cfa	(revision fd775ae85b3364a2f91fb35d504516f1b1ca8bc9)
+++ tests/exceptions/hotpotato_checked.cfa	(revision 26be85438f73872e884a2eaebfd4228b2fb121f4)
@@ -35,5 +35,5 @@
 ExceptionDecl( Explode );
 ExceptionDecl( Terminate, Player * victim; );
-ExceptionDecl( Election, Player * player; );
+ExceptionDecl( Election );
 ExceptionDecl( cmd_error ); // convert(...) throws out_of_range or invalid_argument
 
@@ -47,5 +47,5 @@
 void countdown( Potato & potato ) with(potato) {
 	timer += 1;
-	if ( timer == deadline ) throw ExceptionInst( Explode );
+	if ( timer == deadline ) throwResume ExceptionInst( Explode );
 } // countdown
 
@@ -96,5 +96,5 @@
             if ( partner[LEFT] == &player ) {			// stop when only one player
                 sout | id | " wins the Match!";
-                break;
+                return;
             } // exit
 
@@ -116,20 +116,19 @@
 		sout | "election";
 		sout | " -> " | id | nonl;
-		if ( id > getId( *election->player ) ) election->player = &player; // set umpire to highest id so far
+		if ( id > getId( umpire ) ) &umpire = &player; // set umpire to highest id so far
         resumeAt( *partner[RIGHT], *election );
         disable_ehm();              // disable ehm since we can't handle execption thrown in vote here and want to poll later
 		vote( *partner[RIGHT] );
         enable_ehm();               // enable after vote
-	} catch ( Explode * ) {
+	} catchResume( Explode * ) {
         sout | id | " is eliminated";
         if ( &player == &umpire ) {
             try {
                 id = -1;					// remove from election
-                resumeAt( *partner[RIGHT], ExceptionInst( Election, &player ) );
+                resumeAt( *partner[RIGHT], ExceptionInst( Election ) );
                 vote( *partner[RIGHT] );		// start election
                 checked_poll(); 
             } catchResume( Election * election ) {
-                &umpire = election->player;
-                sout | " : umpire " | getId( *election->player );
+                sout | " : umpire " | getId( umpire );
             } // try
         } // if
