Index: src/driver/cfa.cc
===================================================================
--- src/driver/cfa.cc	(revision c15b80570fa557958b480a71e35c95a291e0d78c)
+++ src/driver/cfa.cc	(revision 0e76cf4f08013d765530952465f1547e8fd011e2)
@@ -244,4 +244,6 @@
 		nargs += 1;
 	} // if
+	args[nargs] = "-I" CFA_INCDIR "/concurrency";
+	nargs += 1;
 	args[nargs] = "-I" CFA_INCDIR "/containers";
 	nargs += 1;
Index: src/examples/coroutine.c
===================================================================
--- src/examples/coroutine.c	(revision c15b80570fa557958b480a71e35c95a291e0d78c)
+++ src/examples/coroutine.c	(revision 0e76cf4f08013d765530952465f1547e8fd011e2)
@@ -1,4 +1,4 @@
 #include <fstream>
-#include "../libcfa/kernel/kernel.h"
+#include <threads>
 
 struct Fibonacci {
Index: src/libcfa/Makefile.am
===================================================================
--- src/libcfa/Makefile.am	(revision c15b80570fa557958b480a71e35c95a291e0d78c)
+++ src/libcfa/Makefile.am	(revision 0e76cf4f08013d765530952465f1547e8fd011e2)
@@ -56,5 +56,6 @@
 CC = ${abs_top_srcdir}/src/driver/cfa
 
-headers = limits stdlib math iostream fstream iterator rational containers/vector
+headers = limits stdlib math iostream fstream iterator rational containers/vector concurrency/threads
+runtimehdrs = concurrency
 libobjs = ${headers:=.o}
 
Index: src/libcfa/Makefile.in
===================================================================
--- src/libcfa/Makefile.in	(revision c15b80570fa557958b480a71e35c95a291e0d78c)
+++ src/libcfa/Makefile.in	(revision 0e76cf4f08013d765530952465f1547e8fd011e2)
@@ -92,5 +92,6 @@
 am__objects_1 = limits.$(OBJEXT) stdlib.$(OBJEXT) math.$(OBJEXT) \
 	iostream.$(OBJEXT) fstream.$(OBJEXT) iterator.$(OBJEXT) \
-	rational.$(OBJEXT) containers/vector.$(OBJEXT)
+	rational.$(OBJEXT) containers/vector.$(OBJEXT) \
+	concurrency/threads.$(OBJEXT)
 am_libcfa_a_OBJECTS = libcfa-prelude.$(OBJEXT) $(am__objects_1)
 libcfa_a_OBJECTS = $(am_libcfa_a_OBJECTS)
@@ -234,5 +235,6 @@
 cfalib_DATA = builtins.cf extras.cf prelude.cf
 MAINTAINERCLEANFILES = builtins.cf extras.cf ${addprefix ${libdir}/,${cfalib_DATA}} ${addprefix ${libdir}/,${lib_LIBRARIES}}
-headers = limits stdlib math iostream fstream iterator rational containers/vector
+headers = limits stdlib math iostream fstream iterator rational containers/vector concurrency/threads
+runtimehdrs = concurrency
 libobjs = ${headers:=.o}
 libcfa_a_SOURCES = libcfa-prelude.c ${headers:=.c}
@@ -312,4 +314,12 @@
 containers/vector.$(OBJEXT): containers/$(am__dirstamp) \
 	containers/$(DEPDIR)/$(am__dirstamp)
+concurrency/$(am__dirstamp):
+	@$(MKDIR_P) concurrency
+	@: > concurrency/$(am__dirstamp)
+concurrency/$(DEPDIR)/$(am__dirstamp):
+	@$(MKDIR_P) concurrency/$(DEPDIR)
+	@: > concurrency/$(DEPDIR)/$(am__dirstamp)
+concurrency/threads.$(OBJEXT): concurrency/$(am__dirstamp) \
+	concurrency/$(DEPDIR)/$(am__dirstamp)
 libcfa.a: $(libcfa_a_OBJECTS) $(libcfa_a_DEPENDENCIES) $(EXTRA_libcfa_a_DEPENDENCIES) 
 	$(AM_V_at)-rm -f libcfa.a
@@ -319,4 +329,5 @@
 mostlyclean-compile:
 	-rm -f *.$(OBJEXT)
+	-rm -f concurrency/threads.$(OBJEXT)
 	-rm -f containers/vector.$(OBJEXT)
 
@@ -332,4 +343,5 @@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/rational.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/stdlib.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@concurrency/$(DEPDIR)/threads.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@containers/$(DEPDIR)/vector.Po@am__quote@
 
@@ -505,4 +517,6 @@
 	-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
 	-test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
+	-rm -f concurrency/$(DEPDIR)/$(am__dirstamp)
+	-rm -f concurrency/$(am__dirstamp)
 	-rm -f containers/$(DEPDIR)/$(am__dirstamp)
 	-rm -f containers/$(am__dirstamp)
@@ -517,5 +531,5 @@
 
 distclean: distclean-am
-	-rm -rf ./$(DEPDIR) containers/$(DEPDIR)
+	-rm -rf ./$(DEPDIR) concurrency/$(DEPDIR) containers/$(DEPDIR)
 	-rm -f Makefile
 distclean-am: clean-am distclean-compile distclean-generic \
@@ -563,5 +577,5 @@
 
 maintainer-clean: maintainer-clean-am
-	-rm -rf ./$(DEPDIR) containers/$(DEPDIR)
+	-rm -rf ./$(DEPDIR) concurrency/$(DEPDIR) containers/$(DEPDIR)
 	-rm -f Makefile
 maintainer-clean-am: distclean-am maintainer-clean-generic \
Index: src/libcfa/concurrency/threads
===================================================================
--- src/libcfa/concurrency/threads	(revision 0e76cf4f08013d765530952465f1547e8fd011e2)
+++ src/libcfa/concurrency/threads	(revision 0e76cf4f08013d765530952465f1547e8fd011e2)
@@ -0,0 +1,34 @@
+//
+// Cforall Version 1.0.0 Copyright (C) 2015 University of Waterloo
+//
+// The contents of this file are covered under the licence agreement in the
+// file "LICENCE" distributed with Cforall.
+//
+// fstream --
+//
+// Author           : Peter A. Buhr
+// Created On       : Wed May 27 17:56:53 2015
+// Last Modified By : Peter A. Buhr
+// Last Modified On : Thu Apr 28 08:08:04 2016
+// Update Count     : 88
+//
+
+#ifndef __THREADS_H__
+#define __THREADS_H__
+
+
+struct coroutine {
+      int blarg;
+};
+
+trait coroutine_t(dtype T) {
+      coroutine* this_coroutine(T* this);
+};
+
+forall(dtype T | coroutine_t(T))
+void suspend(T* cor);
+
+forall(dtype T | coroutine_t(T))
+void resume(T* cor);
+
+#endif //__THREADS_H__
Index: src/libcfa/concurrency/threads.c
===================================================================
--- src/libcfa/concurrency/threads.c	(revision 0e76cf4f08013d765530952465f1547e8fd011e2)
+++ src/libcfa/concurrency/threads.c	(revision 0e76cf4f08013d765530952465f1547e8fd011e2)
@@ -0,0 +1,11 @@
+#include "threads"
+
+forall(dtype T | coroutine_t(T))
+void suspend(T* cor) {
+
+}
+
+forall(dtype T | coroutine_t(T))
+void resume(T* cor) {
+
+}
Index: src/libcfa/kernel/kernel.h
===================================================================
--- src/libcfa/kernel/kernel.h	(revision c15b80570fa557958b480a71e35c95a291e0d78c)
+++ 	(revision )
@@ -1,19 +1,0 @@
-#pragma once
-
-struct coroutine {
-      int blarg;
-};
-
-trait coroutine_t(dtype T) {
-      coroutine* this_coroutine(T* this);
-};
-
-forall(dtype T | coroutine_t(T))
-void suspend(T* cor) {
-      
-}
-
-forall(dtype T | coroutine_t(T))
-void resume(T* cor) {
-
-}
