diff --git a/org.apache.aries.typedevent.remote/org.apache.aries.typedevent.remote.api/src/main/java/org/apache/aries/typedevent/remote/api/RemoteEventMonitor.java b/org.apache.aries.typedevent.remote/org.apache.aries.typedevent.remote.api/src/main/java/org/apache/aries/typedevent/remote/api/RemoteEventMonitor.java
index 0bbcf9c..1f0a791 100644
--- a/org.apache.aries.typedevent.remote/org.apache.aries.typedevent.remote.api/src/main/java/org/apache/aries/typedevent/remote/api/RemoteEventMonitor.java
+++ b/org.apache.aries.typedevent.remote/org.apache.aries.typedevent.remote.api/src/main/java/org/apache/aries/typedevent/remote/api/RemoteEventMonitor.java
@@ -36,13 +36,13 @@
      * In some cases this may be more optimal than adding your own filter to the returned
      * PushStream.
      *
-     * @param filters containing filter expression definitions. The {@link RemoteMonitorEvent#eventType}
-     *                field is available with the key <code>-eventType</code> and the
-     *                {@link RemoteMonitorEvent#publishType} field is available with the key
-     *                <code>-publishType</code>, in addition to fields defined in the event.
+     * @param filters containing filter expression definitions. The {@link RemoteMonitorEvent#publishType} 
+     *                field is available with the key <code>-publishType</code>, in addition to fields 
+     *                defined in the event.
+     *                <p>
      *                If the event contains nested data structures then those are accessible using
      *                nested key names separated by a '.' character (e.g. <code>"foo.bar"</code>
-     *                would correspond to the <code>bar<code> field of the <code>foo</code> value
+     *                would correspond to the <code>bar</code> field of the <code>foo</code> value
      *                from the event.
      *                <p>
      *                If a {@link FilterDTO} contains both LDAP and regular expressions, then both must match.
@@ -61,13 +61,13 @@
      * may be returned if history is unavailable, or if
      * insufficient events have been sent.
      *
-     * @param filters containing filter expression definitions. The {@link RemoteMonitorEvent#eventType}
-     *                field is available with the key <code>-eventType</code> and the
-     *                {@link RemoteMonitorEvent#publishType} field is available with the key
-     *                <code>-publishType</code>, in addition to fields defined in the event.
+     * @param filters containing filter expression definitions. The {@link RemoteMonitorEvent#publishType} 
+     *                field is available with the key <code>-publishType</code>, in addition to fields 
+     *                defined in the event.
+     *                <p>
      *                If the event contains nested data structures then those are accessible using
      *                nested key names separated by a '.' character (e.g. <code>"foo.bar"</code>
-     *                would correspond to the <code>bar<code> field of the <code>foo</code> value
+     *                would correspond to the <code>bar</code> field of the <code>foo</code> value
      *                from the event.
      *                <p>
      *                If a {@link FilterDTO} contains both LDAP and regular expressions, then both must match.
@@ -87,13 +87,13 @@
      * that events may have been discarded, or history
      * unavailable.
      *
-     * @param filters containing filter expression definitions. The {@link RemoteMonitorEvent#eventType}
-     *                field is available with the key <code>-eventType</code> and the
-     *                {@link RemoteMonitorEvent#publishType} field is available with the key
-     *                <code>-publishType</code>, in addition to fields defined in the event.
+     * @param filters containing filter expression definitions. The {@link RemoteMonitorEvent#publishType} 
+     *                field is available with the key <code>-publishType</code>, in addition to fields 
+     *                defined in the event.
+     *                <p>
      *                If the event contains nested data structures then those are accessible using
      *                nested key names separated by a '.' character (e.g. <code>"foo.bar"</code>
-     *                would correspond to the <code>bar<code> field of the <code>foo</code> value
+     *                would correspond to the <code>bar</code> field of the <code>foo</code> value
      *                from the event.
      *                <p>
      *                If a {@link FilterDTO} contains both LDAP and regular expressions, then both must match.
diff --git a/org.apache.aries.typedevent.remote/org.apache.aries.typedevent.remote.remoteservices/src/main/java/org/apache/aries/typedevent/remote/remoteservices/spi/RemoteEventBus.java b/org.apache.aries.typedevent.remote/org.apache.aries.typedevent.remote.remoteservices/src/main/java/org/apache/aries/typedevent/remote/remoteservices/spi/RemoteEventBus.java
index 2c0336e..085ffa1 100644
--- a/org.apache.aries.typedevent.remote/org.apache.aries.typedevent.remote.remoteservices/src/main/java/org/apache/aries/typedevent/remote/remoteservices/spi/RemoteEventBus.java
+++ b/org.apache.aries.typedevent.remote/org.apache.aries.typedevent.remote.remoteservices/src/main/java/org/apache/aries/typedevent/remote/remoteservices/spi/RemoteEventBus.java
@@ -30,13 +30,15 @@
 public interface RemoteEventBus {
     
     /**
-     * This service property provides a String+ containing <topic>=<filter> 
+     * This service property provides a String+ containing &lt;topic&gt;=&lt;filter&gt; 
      * entries indicating the events that the remote nodes are interested in.
      */
     public static final String REMOTE_EVENT_FILTERS = "remote.event.filters";
     
     /**   
      * Called to notify this instance of an event from a remote framework
+     * @param topic The topic
+     * @param eventData The untyped event data
      */
     public void notify(String topic, Map<String, Object> eventData);
 }
