Index: libcfa/src/concurrency/coroutine.cfa
===================================================================
--- libcfa/src/concurrency/coroutine.cfa	(revision 1e7a765a26e6c0887cc363e77372e27b59e794f0)
+++ libcfa/src/concurrency/coroutine.cfa	(revision 16b5d11d3e2ecfacee158ef3099f5d2755e4fa56)
@@ -343,4 +343,7 @@
 
 bool poll() libcfa_public { return poll( active_coroutine() ); }
+void enable_ehm() libcfa_public { active_coroutine()->ehm_state.ehm_enabled = true; }
+void disable_ehm() libcfa_public { active_coroutine()->ehm_state.ehm_enabled = false; }
+bool checked_poll() libcfa_public { return active_coroutine()->ehm_state.ehm_enabled ? poll( active_coroutine() ) : false; }
 coroutine$ * resumer() libcfa_public { return active_coroutine()->last; }
 coroutine$ * first_resumer() libcfa_public { return active_coroutine()->starter; }
Index: libcfa/src/concurrency/coroutine.hfa
===================================================================
--- libcfa/src/concurrency/coroutine.hfa	(revision 1e7a765a26e6c0887cc363e77372e27b59e794f0)
+++ libcfa/src/concurrency/coroutine.hfa	(revision 16b5d11d3e2ecfacee158ef3099f5d2755e4fa56)
@@ -224,14 +224,17 @@
 
 // non local ehm and coroutine utility routines
+void enable_ehm();
+void disable_ehm();
 bool poll( coroutine$ * cor );
 bool poll();
+bool checked_poll();
 coroutine$ * resumer();
 coroutine$ * first_resumer();
 
 forall(T & | is_coroutine(T)) {
-    void enable_ehm( T & cor );
-    void disable_ehm( T & cor );
+    void enable_ehm( T & cor );         // enable checking non-local exceptions for cor via checked_poll
+    void disable_ehm( T & cor );        // disable checking non-local exceptions for cor via checked_poll
     bool poll( T & cor );
-    bool checked_poll( T & cor );
+    bool checked_poll( T & cor );       // check for non-local exceptions while respecting enable/disable
     coroutine$ * resumer( T & cor );
     coroutine$ * first_resumer( T & cor );
