Improve docs
diff --git a/README.md b/README.md
index dddb378..f16c782 100644
--- a/README.md
+++ b/README.md
@@ -1,61 +1,59 @@
-# Prototype of messaging components and reactive streams
+# Prototype of reactive components and reactor based streams
 
-## Example for combining reactor and mqtt
+## Scope
 
-The example [MqttExampleComponent](src/main/java/reactortest/MqttExampleComponent.java) receives Integers from the topic "input",
-computes the average over a sliding window of 2 elements and writes the results to the topic "output".
+I recently experimented with reactive streams and a small component framework.
+See https://github.com/cschneider/streaming-osgi
 
-This example show how to combine reactor with an protocols in a loosely coupled way that does not strictly couple your user code to the protocol.
+The goal is to have a small API that can encapsulate a protocol and transport. The code using a reactive component should not directly depend on the specifics of the transport or protocol. Another goal is to have reactive features like backpressure. Ultimately I am searching for something like Apache Camel Components but with a lot less coupling. In camel the big problem is that components depend on camel core which unfortunately is much more than a component API. So any camel component is coupled quite tightly to all of camel core.
 
 ## Build
 
-Start local kafka server and mqtt server with defaults for tests to work.
-
 ```
-mvn clean install
+mvn clean install -DskipTests
 ```
 
-## Environment
+## Examples
 
-Install and start a MQTT server. I recommend using mosquitto.
-You also need a MQTT client.
+* [Mqtt and Eventadmin](rcomp-examples/rcomp-examples)
+* [Alternative Decanter Kafka appender](rcomp-examples/kafka-appender)
 
-## Install
+## Component API
+
+I was trying to find the simplest API that would allow similar components to camel in one way mode.
+This is what I currently use (https://github.com/cschneider/streaming-osgi/blob/master/rcomp-api/src/main/java/component/api/MComponent.java).
 
 ```
-config:property-set -p component.mqtt.MqttComponent serverUrl tcp://localhost:1883
-feature:repo-add mvn:net.lr.reactive.component/rcomp-features/1.0.0-SNAPSHOT/xml/features
-feature:install rcomp-examples
+public interface RComponent {
+    <T> Publisher<T> from(String destination, Class<T> type);
+    <T> Subscriber<T> to(String destination, Class<T> type);
+}
 ```
 
-Decanter kafka appender example
+A component is a factory for Publishers and Subscribers. From and to have the same meaning as in camel. The component can be given a source / target type to produce / consume. So with the OSGi Converter spec this would allow to have type safe messaging without coding the conversion in every component. Each component is exposed as a service which encapsulates most of the configuration. All endpoint specific configuration can be done using the destination String.
 
-This example shows how to leverage reactive components to create an alternative kafka appender for decanter.
-The kafka-appender bundle creates a flux that listens on eventadmin (rcomp-eventadmin) and sends to a kafka server (rcomp-kafka).  
+Publisher and Subscriber are interfaces from the reactive streams api (http://www.reactive-streams.org/). So they are well defined and have zero additional dependencies.
 
-This is a proof of concept that we could base a future decanter version on reactive components.
+One example for such a component is the MqttComponent https://github.com/cschneider/streaming-osgi/blob/master/rcomp-mqtt/src/main/java/component/mqtt/MqttComponent.java.
 
-```
-config:property-set -p appender.kafka topic decanter
-feature:repo-add mvn:net.lr.reactive.component/rcomp-features/1.0.0-SNAPSHOT/xml/features
-feature:install decanter-collector-log rcomp-decanter-appender-kafka decanter-collector-jmx
-```
+## Possible use cases
 
-## Test
+Two big use cases are reactive microservices that need messaging integrations as well as plain camel like integrations.
+Another case are the Apache Karaf decanter collectors and appenders. Currently they use a decanter specific API but they could easily be converted into the more general rcomp api.
+We could also create a bridge to camel components to leverage the many existing camel components using the rcomp API as well as offering rcomp components to camel.
 
-## Mqtt
-Start mqtt client
+Components alone are of course not enough. One big strength of Apache Camel is the DSL. In case of rcomp I propose to not create our own DSL and instead use existing DSLs that work well in OSGi. Two examples:
 
-Subscribe to topic "output". 
-You should receive the following on the topic output: "1.5", "2.5", ...
+* [Akka and reactive streams](https://de.slideshare.net/ktoso/reactive-integrations-with-akka-streams)
+* [Reactor and reactive streams](https://de.slideshare.net/StphaneMaldini/reactor-30-a-reactive-foundation-for-java-8-and-spring)
 
-This can also be seen in the karaf log.
+It is already possible to integrate CXF Rest services with reactive streams using some adapters but we could have native integration.
 
-# EventAdmin
+## Risks and Opportunities
 
-```
-event:send input a=b
-log:tail
-```
+The main risk I see is not gathering a critical mass of components to draw more people. 
+Another risk is that the RComponent API or the reactor streams have some unexpected limitations. 
+The big opportunity I see is that the rcomp API is very simple so the barrier of entry is low. 
+I also hope that this might become a new foundation for a simpler and more modern Apache Camel.
 
-The log should show that the event was received.
+So this all depends on getting some support by you all. 
diff --git a/pom.xml b/pom.xml
index d0c841e..e497945 100644
--- a/pom.xml
+++ b/pom.xml
@@ -19,7 +19,7 @@
 		<module>rcomp-mqtt</module>
 		<module>rcomp-mail</module>
 		<module>rcomp-kafka</module>
-		<module>rcomp-examples-main</module>
+		<module>rcomp-examples</module>
 		<module>rcomp-app</module>
 		<module>rcomp-features</module>
 	</modules>
diff --git a/rcomp-examples/kafka-appender/README.md b/rcomp-examples/kafka-appender/README.md
new file mode 100644
index 0000000..ce6230b
--- /dev/null
+++ b/rcomp-examples/kafka-appender/README.md
@@ -0,0 +1,29 @@
+## Decanter kafka appender example
+
+This example shows how to leverage reactive components to create an alternative kafka appender for decanter.
+The kafka-appender bundle creates a flux that listens on eventadmin (rcomp-eventadmin) and sends to a kafka server (rcomp-kafka).  
+This is a proof of concept that we could base a future decanter version on reactive components.
+
+## Environment
+
+Install and start kafka server locally
+
+```
+bin/kafka-server-start.sh config/server.properties
+```
+
+## Install
+
+```
+config:property-set -p appender.kafka topic decanter
+feature:repo-add mvn:net.lr.reactive.component/rcomp-features/1.0.0-SNAPSHOT/xml/features
+feature:install decanter-collector-log rcomp-decanter-appender-kafka decanter-collector-jmx
+```
+
+## Test
+
+Start a kafka consumer to listen on the decanter topic. You should see decanter messages for log messages and jmx beans.
+
+```
+bin/kafka-console-consumer.sh --consumer.config config/consumer.properties --bootstrap-server=localhost:9092 --topic decanter
+```
diff --git a/rcomp-examples-main/kafka-appender/bnd.bnd b/rcomp-examples/kafka-appender/bnd.bnd
similarity index 100%
rename from rcomp-examples-main/kafka-appender/bnd.bnd
rename to rcomp-examples/kafka-appender/bnd.bnd
diff --git a/rcomp-examples-main/kafka-appender/pom.xml b/rcomp-examples/kafka-appender/pom.xml
similarity index 100%
rename from rcomp-examples-main/kafka-appender/pom.xml
rename to rcomp-examples/kafka-appender/pom.xml
diff --git a/rcomp-examples-main/kafka-appender/src/main/java/net/lr/reactive/components/appender/kafka/KafkaAppender.java b/rcomp-examples/kafka-appender/src/main/java/net/lr/reactive/components/appender/kafka/KafkaAppender.java
similarity index 100%
rename from rcomp-examples-main/kafka-appender/src/main/java/net/lr/reactive/components/appender/kafka/KafkaAppender.java
rename to rcomp-examples/kafka-appender/src/main/java/net/lr/reactive/components/appender/kafka/KafkaAppender.java
diff --git a/rcomp-examples-main/pom.xml b/rcomp-examples/pom.xml
similarity index 100%
rename from rcomp-examples-main/pom.xml
rename to rcomp-examples/pom.xml
diff --git a/rcomp-examples/rcomp-examples/README.md b/rcomp-examples/rcomp-examples/README.md
new file mode 100644
index 0000000..3d91791
--- /dev/null
+++ b/rcomp-examples/rcomp-examples/README.md
@@ -0,0 +1,47 @@
+## Example for combining reactor and mqtt
+
+This example shows how to build some integrations using reactor and reactive components.
+
+[MqttEmitter](src/main/java/reactortest/MqttEmitter.java) creates an unbounded list of Integers count up from 0 and sends them to the mqtt topic "input".
+
+[MqttExampleComponent](src/main/java/reactortest/MqttExample.java) receives Integers from the topic "input",
+computes the average over a sliding window of 2 elements and writes the results to the topic "output".
+
+[MqttReceiver](src/main/java/reactortest/MqttReceiver.java) listens on the topic "output" and writes the message to the log.
+
+This example show how to combine reactor with an protocols in a loosely coupled way that does not strictly couple your user code to the protocol.
+
+[EventAdminExample](src/main/java/reactortest/EventAdminExample.java) listens on the topic eainput and sends to eaoutput. You can use the karaf
+event admin commands to test it. 
+
+### Environment
+
+Install and start a MQTT server. I recommend using mosquitto.
+You also need a MQTT client.
+
+### Install
+
+```
+config:property-set -p component.mqtt.MqttComponent serverUrl tcp://localhost:1883
+feature:repo-add mvn:net.lr.reactive.component/rcomp-features/1.0.0-SNAPSHOT/xml/features
+feature:install rcomp-examples
+```
+
+## Test
+
+## Mqtt
+Start mqtt client
+
+Subscribe to topic "output". 
+You should receive the following on the topic output: "1.5", "2.5", ...
+
+This can also be seen in the karaf log.
+
+# EventAdmin
+
+```
+event:send input a=b
+log:tail
+```
+
+The log should show that the event was received.
diff --git a/rcomp-examples-main/rcomp-examples/bnd.bnd b/rcomp-examples/rcomp-examples/bnd.bnd
similarity index 100%
rename from rcomp-examples-main/rcomp-examples/bnd.bnd
rename to rcomp-examples/rcomp-examples/bnd.bnd
diff --git a/rcomp-examples-main/rcomp-examples/pom.xml b/rcomp-examples/rcomp-examples/pom.xml
similarity index 100%
rename from rcomp-examples-main/rcomp-examples/pom.xml
rename to rcomp-examples/rcomp-examples/pom.xml
diff --git a/rcomp-examples-main/rcomp-examples/src/main/java/reactortest/ByteArrayConverter.java b/rcomp-examples/rcomp-examples/src/main/java/reactortest/ByteArrayConverter.java
similarity index 100%
rename from rcomp-examples-main/rcomp-examples/src/main/java/reactortest/ByteArrayConverter.java
rename to rcomp-examples/rcomp-examples/src/main/java/reactortest/ByteArrayConverter.java
diff --git a/rcomp-examples-main/rcomp-examples/src/main/java/reactortest/DoubleConverter.java b/rcomp-examples/rcomp-examples/src/main/java/reactortest/DoubleConverter.java
similarity index 100%
rename from rcomp-examples-main/rcomp-examples/src/main/java/reactortest/DoubleConverter.java
rename to rcomp-examples/rcomp-examples/src/main/java/reactortest/DoubleConverter.java
diff --git a/rcomp-examples-main/rcomp-examples/src/main/java/reactortest/EventAdminExample.java b/rcomp-examples/rcomp-examples/src/main/java/reactortest/EventAdminExample.java
similarity index 85%
rename from rcomp-examples-main/rcomp-examples/src/main/java/reactortest/EventAdminExample.java
rename to rcomp-examples/rcomp-examples/src/main/java/reactortest/EventAdminExample.java
index ea14f0c..5a204f8 100644
--- a/rcomp-examples-main/rcomp-examples/src/main/java/reactortest/EventAdminExample.java
+++ b/rcomp-examples/rcomp-examples/src/main/java/reactortest/EventAdminExample.java
@@ -23,8 +23,8 @@
     @SuppressWarnings("rawtypes")
     @Activate
     public void start() throws Exception {
-        Publisher<Map> fromTopic = eventAdmin.from("input", Map.class);
-        Subscriber<Map> toTopic = eventAdmin.to("output", Map.class);
+        Publisher<Map> fromTopic = eventAdmin.from("eainput", Map.class);
+        Subscriber<Map> toTopic = eventAdmin.to("eaoutput", Map.class);
         Flux.from(fromTopic)
             .log()
             .subscribe(toTopic);
diff --git a/rcomp-examples-main/rcomp-examples/src/main/java/reactortest/MqttEmitter.java b/rcomp-examples/rcomp-examples/src/main/java/reactortest/MqttEmitter.java
similarity index 100%
rename from rcomp-examples-main/rcomp-examples/src/main/java/reactortest/MqttEmitter.java
rename to rcomp-examples/rcomp-examples/src/main/java/reactortest/MqttEmitter.java
diff --git a/rcomp-examples-main/rcomp-examples/src/main/java/reactortest/MqttExample.java b/rcomp-examples/rcomp-examples/src/main/java/reactortest/MqttExample.java
similarity index 100%
rename from rcomp-examples-main/rcomp-examples/src/main/java/reactortest/MqttExample.java
rename to rcomp-examples/rcomp-examples/src/main/java/reactortest/MqttExample.java
diff --git a/rcomp-examples-main/rcomp-examples/src/main/java/reactortest/MqttReceiver.java b/rcomp-examples/rcomp-examples/src/main/java/reactortest/MqttReceiver.java
similarity index 100%
rename from rcomp-examples-main/rcomp-examples/src/main/java/reactortest/MqttReceiver.java
rename to rcomp-examples/rcomp-examples/src/main/java/reactortest/MqttReceiver.java
diff --git a/rcomp-examples-main/rcomp-examples/src/main/resources/1.txt b/rcomp-examples/rcomp-examples/src/main/resources/1.txt
similarity index 100%
rename from rcomp-examples-main/rcomp-examples/src/main/resources/1.txt
rename to rcomp-examples/rcomp-examples/src/main/resources/1.txt
diff --git a/rcomp-examples-main/rcomp-examples/src/main/resources/2.txt b/rcomp-examples/rcomp-examples/src/main/resources/2.txt
similarity index 100%
rename from rcomp-examples-main/rcomp-examples/src/main/resources/2.txt
rename to rcomp-examples/rcomp-examples/src/main/resources/2.txt
diff --git a/rcomp-examples-main/rcomp-examples/src/test/java/examples/Test1.java b/rcomp-examples/rcomp-examples/src/test/java/examples/Test1.java
similarity index 100%
rename from rcomp-examples-main/rcomp-examples/src/test/java/examples/Test1.java
rename to rcomp-examples/rcomp-examples/src/test/java/examples/Test1.java
diff --git a/rcomp-examples-main/rcomp-examples/src/test/java/examples/TestRs.java b/rcomp-examples/rcomp-examples/src/test/java/examples/TestRs.java
similarity index 100%
rename from rcomp-examples-main/rcomp-examples/src/test/java/examples/TestRs.java
rename to rcomp-examples/rcomp-examples/src/test/java/examples/TestRs.java
diff --git a/rcomp-examples-main/rcomp-examples/src/test/java/examples/TestServlet.java b/rcomp-examples/rcomp-examples/src/test/java/examples/TestServlet.java
similarity index 100%
rename from rcomp-examples-main/rcomp-examples/src/test/java/examples/TestServlet.java
rename to rcomp-examples/rcomp-examples/src/test/java/examples/TestServlet.java