Adapt generics
diff --git a/pom.xml b/pom.xml
index f2c0d63..36c32ed 100644
--- a/pom.xml
+++ b/pom.xml
@@ -10,6 +10,7 @@
 		<reactor.version>3.0.7.RELEASE</reactor.version>
 		<jetty.version>8.1.15.v20140411</jetty.version>
 		<cxf.version>3.1.2</cxf.version>
+		<bnd.version>3.4.0-SNAPSHOT</bnd.version>
 	</properties>
 
 	<modules>
@@ -23,8 +24,8 @@
 
 	<pluginRepositories>
 		<pluginRepository>
-			<id>bnd-3.4.0-rc1</id>
-			<url>https://bndtools.ci.cloudbees.com/job/bnd.next/599/artifact/dist/bundles/</url>
+			<id>bnd-3.4.0-rc2</id>
+			<url>https://bndtools.ci.cloudbees.com/job/bnd.next/600/artifact/dist/bundles/</url>
 			<snapshots>
 				<enabled>true</enabled>
 			</snapshots>
@@ -92,7 +93,7 @@
 				<plugin>
 					<groupId>biz.aQute.bnd</groupId>
 					<artifactId>bnd-export-maven-plugin</artifactId>
-					<version>3.4.0-SNAPSHOT</version>
+					<version>${bnd.version}</version>
 					<configuration>
 						<resolve>true</resolve>
 						<failOnChanges>false</failOnChanges>
@@ -120,7 +121,7 @@
 			<plugin>
 				<groupId>biz.aQute.bnd</groupId>
 				<artifactId>bnd-maven-plugin</artifactId>
-				<version>3.4.0-SNAPSHOT</version>
+				<version>${bnd.version}</version>
 				<executions>
 					<execution>
 						<goals>
diff --git a/rcomp-api/src/main/java/component/api/MComponent.java b/rcomp-api/src/main/java/component/api/MComponent.java
index a20242a..1a6994f 100644
--- a/rcomp-api/src/main/java/component/api/MComponent.java
+++ b/rcomp-api/src/main/java/component/api/MComponent.java
@@ -4,6 +4,6 @@
 import org.reactivestreams.Subscriber;
 
 public interface MComponent {
-    <T> Publisher<T> from(String destination, Class<? extends T> type);
-    <T> Subscriber<T> to(String destination, Class<? extends T> type);
+    <T> Publisher<T> from(String destination, Class<T> type);
+    <T> Subscriber<T> to(String destination, Class<T> type);
 }
diff --git a/rcomp-eventadmin/src/main/java/component/eventadmin/EventAdminComponent.java b/rcomp-eventadmin/src/main/java/component/eventadmin/EventAdminComponent.java
index f3506f7..46ce152 100644
--- a/rcomp-eventadmin/src/main/java/component/eventadmin/EventAdminComponent.java
+++ b/rcomp-eventadmin/src/main/java/component/eventadmin/EventAdminComponent.java
@@ -30,12 +30,12 @@
     }
 
     @Override
-    public <T> Publisher<T> from(String topic, Class<? extends T> type) {
+    public <T> Publisher<T> from(String topic, Class<T> type) {
         return new EventAdminSource<T>(context, topic, type);
     }  
     
     @Override
-    public <T> Subscriber<T> to(String topic, Class<? extends T> type) {
+    public <T> Subscriber<T> to(String topic, Class<T> type) {
         return new EventAdminDestination<T>(client, topic, type);
     }
 
diff --git a/rcomp-eventadmin/src/main/java/component/eventadmin/EventAdminDestination.java b/rcomp-eventadmin/src/main/java/component/eventadmin/EventAdminDestination.java
index 9c58201..653a190 100644
--- a/rcomp-eventadmin/src/main/java/component/eventadmin/EventAdminDestination.java
+++ b/rcomp-eventadmin/src/main/java/component/eventadmin/EventAdminDestination.java
@@ -13,7 +13,7 @@
     private String topic;
     private Subscription subscription;
 
-    public EventAdminDestination(EventAdmin client, String topic, Class<? extends T> type) {
+    public EventAdminDestination(EventAdmin client, String topic, Class<T> type) {
         this.client = client;
         this.topic = topic;
         if (! type.equals(Map.class)) {
diff --git a/rcomp-eventadmin/src/main/java/component/eventadmin/EventAdminSource.java b/rcomp-eventadmin/src/main/java/component/eventadmin/EventAdminSource.java
index 0354f75..3de3969 100644
--- a/rcomp-eventadmin/src/main/java/component/eventadmin/EventAdminSource.java
+++ b/rcomp-eventadmin/src/main/java/component/eventadmin/EventAdminSource.java
@@ -19,7 +19,7 @@
     private BundleContext context;
     private String topic;
     
-    public EventAdminSource(BundleContext context, String topic, Class<? extends T> type) {
+    public EventAdminSource(BundleContext context, String topic, Class<T> type) {
         this.context = context;
         this.topic = topic;
         if (! type.equals(Map.class)) {
diff --git a/rcomp-examples/src/main/java/reactortest/EventAdminExample.java b/rcomp-examples/src/main/java/reactortest/EventAdminExample.java
index 2417f0b..1086cc4 100644
--- a/rcomp-examples/src/main/java/reactortest/EventAdminExample.java
+++ b/rcomp-examples/src/main/java/reactortest/EventAdminExample.java
@@ -22,8 +22,8 @@
 
     @Activate
     public void start() throws Exception {
-        Publisher<Map<String, ?>> fromTopic = eventAdmin.from("input", Map.class);
-        Subscriber<Map<String, ?>> toTopic = eventAdmin.to("output", Map.class);
+        Publisher<Map> fromTopic = eventAdmin.from("input", Map.class);
+        Subscriber<Map> toTopic = eventAdmin.to("output", Map.class);
         Flux.from(fromTopic)
             .log()
             .subscribe(toTopic);
diff --git a/rcomp-mail/src/main/java/component/mail/MailComponent.java b/rcomp-mail/src/main/java/component/mail/MailComponent.java
index 62ea322..3b10f76 100644
--- a/rcomp-mail/src/main/java/component/mail/MailComponent.java
+++ b/rcomp-mail/src/main/java/component/mail/MailComponent.java
@@ -16,12 +16,12 @@
     Session session;
 
     @Override
-    public <T> Publisher<T> from(String topic, Class<? extends T> type) {
+    public <T> Publisher<T> from(String topic, Class<T> type) {
         throw new RuntimeException();
     }  
     
     @Override
-    public <T> Subscriber<T> to(String destination, Class<? extends T> type) {
+    public <T> Subscriber<T> to(String destination, Class<T> type) {
         return new MailDestination<T>(destination, type);
     }
 
diff --git a/rcomp-mqtt/src/main/java/component/mqtt/MqttComponent.java b/rcomp-mqtt/src/main/java/component/mqtt/MqttComponent.java
index 352475f..d72a88c 100644
--- a/rcomp-mqtt/src/main/java/component/mqtt/MqttComponent.java
+++ b/rcomp-mqtt/src/main/java/component/mqtt/MqttComponent.java
@@ -35,12 +35,12 @@
     }
 
     @Override
-    public <T> Publisher<T> from(String topic, Class<? extends T> type) {
+    public <T> Publisher<T> from(String topic, Class<T> type) {
         return new MqttSource<T>(client, topic, type);
     }  
     
     @Override
-    public <T> Subscriber<T> to(String topic, Class<? extends T> type) {
+    public <T> Subscriber<T> to(String topic, Class<T> type) {
         return new MqttDestination<T>(client, topic, type);
     }