Cleaned-up templates and added package.html files.
diff --git a/net/core/trivial/src/main/java/org/onlab/onos/net/trivial/impl/SimpleHostManager.java b/net/core/trivial/src/main/java/org/onlab/onos/net/trivial/impl/SimpleHostManager.java
index 81397cf..0c0c983 100644
--- a/net/core/trivial/src/main/java/org/onlab/onos/net/trivial/impl/SimpleHostManager.java
+++ b/net/core/trivial/src/main/java/org/onlab/onos/net/trivial/impl/SimpleHostManager.java
@@ -3,55 +3,56 @@
 import org.apache.felix.scr.annotations.Activate;
 import org.apache.felix.scr.annotations.Component;
 import org.apache.felix.scr.annotations.Deactivate;
+import org.apache.felix.scr.annotations.Reference;
+import org.apache.felix.scr.annotations.ReferenceCardinality;
 import org.apache.felix.scr.annotations.Service;
+import org.onlab.onos.event.AbstractListenerManager;
+import org.onlab.onos.event.EventDispatchService;
 import org.onlab.onos.net.host.HostDescription;
+import org.onlab.onos.net.host.HostEvent;
+import org.onlab.onos.net.host.HostListener;
 import org.onlab.onos.net.host.HostProvider;
 import org.onlab.onos.net.host.HostProviderBroker;
 import org.onlab.onos.net.host.HostProviderService;
 import org.onlab.onos.net.provider.AbstractProviderBroker;
 import org.onlab.onos.net.provider.AbstractProviderService;
 import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
+
+import static org.slf4j.LoggerFactory.getLogger;
 
 /**
  * Provides basic implementation of the host SB & NB APIs.
  */
 @Component(immediate = true)
 @Service
-public class SimpleHostManager implements HostProviderBroker {
+public class SimpleHostManager
+        extends AbstractProviderBroker<HostProvider, HostProviderService>
+        implements HostProviderBroker {
 
-    private Logger log = LoggerFactory.getLogger(SimpleHostManager.class);
+    private final Logger log = getLogger(getClass());
 
-    private final HostProviderBroker broker = new InternalBroker();
+    private final AbstractListenerManager<HostEvent, HostListener>
+            listenerManager = new AbstractListenerManager<>();
+
+    @Reference(cardinality = ReferenceCardinality.MANDATORY_UNARY)
+    private EventDispatchService eventDispatcher;
+
 
     @Activate
     public void activate() {
+        eventDispatcher.addSink(HostEvent.class, listenerManager);
         log.info("Started");
     }
 
     @Deactivate
     public void deactivate() {
+        eventDispatcher.removeSink(HostEvent.class);
         log.info("Stopped");
     }
 
     @Override
-    public HostProviderService register(HostProvider provider) {
-        return broker.register(provider);
-    }
-
-    @Override
-    public void unregister(HostProvider provider) {
-        broker.unregister(provider);
-    }
-
-    // Internal delegate for tracking various providers and issuing them a
-    // personalized provider service.
-    private class InternalBroker extends AbstractProviderBroker<HostProvider, HostProviderService>
-            implements HostProviderBroker {
-        @Override
-        protected HostProviderService createProviderService(HostProvider provider) {
-            return new InternalHostProviderService(provider);
-        }
+    protected HostProviderService createProviderService(HostProvider provider) {
+        return new InternalHostProviderService(provider);
     }
 
     // Personalized host provider service issued to the supplied provider.