Index: doc/papers/concurrency/c++-cor/C++Cor-ts.cpp
===================================================================
--- doc/papers/concurrency/c++-cor/C++Cor-ts.cpp	(revision 8f936bfe68b397cd1aa78e1ca4aa63bd035cedd3)
+++ 	(revision )
@@ -1,42 +1,0 @@
-
-
-auto result = co_await expression;
-
-//   |  |
-//   |  |
-//  \    /
-//   \  /
-//    \/
-
-auto&& __a = expression;
-if (!__a.await_ready()) {
-	__a.await_suspend(coroutine-handle)
-	// ...suspend/resume point...
-}
-auto result = __a.await_resume();
-
-//==================================================
-
-co_yield i;
-
-//   |  |
-//   |  |
-//  \    /
-//   \  /
-//    \/
-
-co_await __promise.yield_value(i);
-
-//==================================================
-
-... coroutine() {
-	__coroutine_context* __context = new __coroutine_context{};
-	__return = __context->_promise.get_return_object();
-	co_await   __context->_promise.initial_suspend();
-
-	...
-
-__final_suspend_label:
-	co_await __context->promise.final_suspend();
-	delete __context;
-}
Index: doc/papers/concurrency/c++-cor/base.hpp
===================================================================
--- doc/papers/concurrency/c++-cor/base.hpp	(revision 8f936bfe68b397cd1aa78e1ca4aa63bd035cedd3)
+++ 	(revision )
@@ -1,20 +1,0 @@
-#include <iostream>
-#include <experimental/coroutine>
-
-struct suspend_never {
-	bool await_ready() noexcept {
-		return true;
-	}
-
-	void await_suspend(std::experimental::coroutine_handle<>) noexcept {}
-	void await_resume() noexcept {}
-};
-
-struct suspend_always {
-	bool await_ready() noexcept {
-		return false;
-	}
-
-	void await_suspend(std::experimental::coroutine_handle<>) noexcept {}
-	void await_resume() noexcept {}
-};
Index: doc/papers/concurrency/c++-cor/counter.cpp
===================================================================
--- doc/papers/concurrency/c++-cor/counter.cpp	(revision 8f936bfe68b397cd1aa78e1ca4aa63bd035cedd3)
+++ doc/papers/concurrency/c++-cor/counter.cpp	(revision 2e041e276e3c041daeb3e6411e2157f397c9a362)
@@ -1,3 +1,22 @@
-#include "base.hpp"
+#include <iostream>
+#include <experimental/coroutine>
+
+struct suspend_never {
+	bool await_ready() noexcept {
+		return true;
+	}
+
+	void await_suspend(std::experimental::coroutine_handle<>) noexcept {}
+	void await_resume() noexcept {}
+};
+
+struct suspend_always {
+	bool await_ready() noexcept {
+		return false;
+	}
+
+	void await_suspend(std::experimental::coroutine_handle<>) noexcept {}
+	void await_resume() noexcept {}
+};
 
 struct counter_cor {
Index: doc/papers/concurrency/c++-cor/fib.cpp
===================================================================
--- doc/papers/concurrency/c++-cor/fib.cpp	(revision 8f936bfe68b397cd1aa78e1ca4aa63bd035cedd3)
+++ doc/papers/concurrency/c++-cor/fib.cpp	(revision 2e041e276e3c041daeb3e6411e2157f397c9a362)
@@ -1,7 +1,22 @@
-#include "base.hpp"
+#include <iostream>
+#include <experimental/coroutine>
 
-#include <algorithm>
-#include <iterator>
-#include <vector>
+struct suspend_never {
+	bool await_ready() noexcept {
+		return true;
+	}
+
+	void await_suspend(std::experimental::coroutine_handle<>) noexcept {}
+	void await_resume() noexcept {}
+};
+
+struct suspend_always {
+	bool await_ready() noexcept {
+		return false;
+	}
+
+	void await_suspend(std::experimental::coroutine_handle<>) noexcept {}
+	void await_resume() noexcept {}
+};
 
 template<typename T>
@@ -14,6 +29,6 @@
 		}
 
-		auto initial_suspend() { return suspend_always(); }
-		auto final_suspend()   { return suspend_always(); }
+		auto initial_suspend() { return suspend_never(); }
+		auto final_suspend()   { return suspend_never(); }
 
 		void return_value(T value) {
@@ -59,33 +74,4 @@
 		return _coroutine.promise()._value;
 	}
-
-	struct iterator : std::iterator<std::input_iterator_tag, T> {
-		std::experimental::coroutine_handle<promise_type> _coroutine = nullptr;
-
-		iterator() = default;
-		explicit iterator(std::experimental::coroutine_handle<promise_type> coroutine)
-			: _coroutine(coroutine)
-		{}
-
-		iterator& operator++() {
-			_coroutine.resume();
-			return *this;
-		}
-
-		T const & operator*() const {
-			return _coroutine.promise()._value;
-		}
-	};
-
-	iterator begin() {
-		if(_coroutine) {
-			_coroutine.resume();
-			if(_coroutine.done()) { return end(); }
-		}
-
-		return iterator{ _coroutine };
-	}
-
-	iterator end() { return iterator{}; }
 };
 
@@ -100,20 +86,8 @@
 
 int main() {
-	{
-		auto f1 = fib();
-		auto f2 = fib();
-		for(int i = 0; i < 10; i++) {
-			std::cout << f1.next() << " " << f2.next() << std::endl;
-		}
-	}
-
-	{
-		auto f1 = fib();
-		std::vector<int> fibs;
-		std::copy_n(f1.begin(), 10, std::back_inserter(fibs));
-
-		for(auto i : fibs) {
-			std::cout << i << std::endl;
-		}
+	auto f1 = fib();
+	auto f2 = fib();
+	for(int i = 0; i < 10; i++) {
+		std::cout << f1.next() << " " << f2.next() << std::endl;
 	}
 }
Index: doc/papers/concurrency/c++-cor/fmt.cpp
===================================================================
--- doc/papers/concurrency/c++-cor/fmt.cpp	(revision 8f936bfe68b397cd1aa78e1ca4aa63bd035cedd3)
+++ 	(revision )
@@ -1,87 +1,0 @@
-
-#include "base.hpp"
-
-struct fmt_cor {
-	struct promise_type {
-		char _value;
-		int g, b;
-
-		fmt_cor get_return_object() {
-			return fmt_cor(std::experimental::coroutine_handle<promise_type>::from_promise(*this));
-		}
-
-		auto initial_suspend() { return suspend_never(); }
-		auto final_suspend()   { return suspend_always(); }
-
-		void return_void() {}
-		void unhandled_exception() {}
-	};
-
-	struct get {
-		promise_type * _promise = nullptr;
-
-		bool await_ready() noexcept {
-			return false;
-		}
-
-		void await_suspend(std::experimental::coroutine_handle<promise_type> _coroutine) noexcept {
-			_promise = &_coroutine.promise();
-		}
-		char await_resume() noexcept {
-			assert(_promise);
-			return _promise->_value;
-		}
-	};
-
-	std::experimental::coroutine_handle<promise_type> _coroutine = nullptr;
-
-	explicit fmt_cor(std::experimental::coroutine_handle<promise_type> coroutine)
-		: _coroutine(coroutine)
-	{}
-
-	~fmt_cor() {
-		if(_coroutine) { _coroutine.destroy(); }
-	}
-
-	fmt_cor() = default;
-	fmt_cor(fmt_cor const &) = delete;
-	fmt_cor& operator=(fmt_cor const &) = delete;
-
-	fmt_cor(fmt_cor&& other) {
-		std::swap(_coroutine, other._coroutine);
-	}
-
-	fmt_cor& operator=(fmt_cor&& other) {
-		if(&other != this) {
-			_coroutine = other._coroutine;
-			other._coroutine = nullptr;
-		}
-		return *this;
-	}
-
-	void send(char a) {
-		_coroutine.promise()._value = a;
-		_coroutine.resume();
-	}
-};
-
-fmt_cor Fmt() {
-	int g; // = co_await fmt_cor::g();
-	int b; // = co_await fmt_cor::b();
-	for(;;) {
-		for(g = 0; g < 5; g++) {
-			for(b = 0; b < 4; b++) {
-				std::cout << co_await fmt_cor::get();
-			}
-			std::cout << "  ";
-		}
-		std::cout << std::endl;
-	}
-}
-
-int main() {
-	auto fmt = Fmt();
-	for(int i = 0; i < 41; i++) {
-		fmt.send('a');
-	}
-}
