diff --git a/.vscode/launch.json b/.vscode/launch.json
index 4db7965..518fcbe 100644
--- a/.vscode/launch.json
+++ b/.vscode/launch.json
@@ -5,7 +5,7 @@
{
"type": "chrome",
"request": "launch",
- "name": "Launch Chrome against localhost",
+ "name": "Chrome",
"url": "http://localhost:23001",
"webRoot": "${workspaceFolder}",
"userDataDir": "${workspaceFolder}/.vscode/profile"
diff --git a/CHANGELOG.md b/CHANGELOG.md
index ed28e1c..8097409 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,5 +1,11 @@
# Changelog
+## 3.1.0 - 2024-10-01
+
+- ComChannelEndpoint has been extracted from WorkerTask
+ - Now Worker, MessageChannel or DedicatedWorkerGlobalScope can be channel endpoints. Both ends of the communication channel can use the same implementation to send message and await responses if needed.
+ - Added new example **HelloWorldComChannelEndpoint**
+
## 3.0.0 - 2024-01-05
- Make the worker lifecylce no longer mandatory if not using `WorkerTaskDirector`.
diff --git a/README.md b/README.md
index 28c87f0..1a10dd8 100644
--- a/README.md
+++ b/README.md
@@ -34,6 +34,7 @@ Build applications with workers with less boiler plate code.
There are multiple examples available demonstarting the features described above (listed from simpler to more advanced):
- Using [wtd-core](https://www.npmjs.com/package/wtd-core) only:
+ - **ComChannelEndpoint: Hello World**: [html](https://github.com/kaisalmen/wtd/blob/main/packages/examples/helloWorldComChannelEndpoint.html), [ts](https://github.com/kaisalmen/wtd/blob/main/packages/examples/src/helloWorld/HelloWorldComChannelEndpoint.ts), [worker](https://github.com/kaisalmen/wtd/blob/main/packages/examples/src/worker/HelloWorldComChannelEndpointWorker.ts)
- **WorkerTask: Hello World**: [html](https://github.com/kaisalmen/wtd/blob/main/packages/examples/helloWorldWorkerTask.html), [ts](https://github.com/kaisalmen/wtd/blob/main/packages/examples/src/helloWorld/HelloWorldWorkerTask.ts), [worker](https://github.com/kaisalmen/wtd/blob/main/packages/examples/src/worker/HelloWorldWorker.ts)
- **WorkerTaskDirector: Hello World**: [html](https://github.com/kaisalmen/wtd/blob/main/packages/examples/helloWorldWorkerTaskDirector.html), [ts](https://github.com/kaisalmen/wtd/blob/main/packages/examples/src/helloWorld/helloWorldWorkerTaskDirector.ts), [worker](https://github.com/kaisalmen/wtd/blob/main/packages/examples/src/worker/HelloWorldWorker.ts)
- **WorkerTask: Inter-Worker Communication**: [html](https://github.com/kaisalmen/wtd/blob/main/packages/examples/workerCom.html), [ts](https://github.com/kaisalmen/wtd/blob/main/packages/examples/src/com/WorkerCom.ts), **Worker**: [1](https://github.com/kaisalmen/wtd/blob/main/packages/examples/src/worker/Com1Worker.ts) and [2](https://github.com/kaisalmen/wtd/blob/main/packages/examples/src/worker/Com2Worker.ts)
diff --git a/index.html b/index.html
index 417f399..fb58856 100644
--- a/index.html
+++ b/index.html
@@ -10,6 +10,8 @@