diff --git a/net/api/src/main/java/org/onlab/onos/event/AbstractEvent.java b/net/api/src/main/java/org/onlab/onos/event/AbstractEvent.java
index db688e6..93dca8e 100644
--- a/net/api/src/main/java/org/onlab/onos/event/AbstractEvent.java
+++ b/net/api/src/main/java/org/onlab/onos/event/AbstractEvent.java
@@ -1,7 +1,7 @@
 package org.onlab.onos.event;
 
 /**
- * Base abstraction of an event.
+ * Base event implementation.
  */
 public class AbstractEvent<T extends Enum, S extends Object> implements Event<T, S> {
 
diff --git a/net/api/src/main/java/org/onlab/onos/event/AbstractListenerManager.java b/net/api/src/main/java/org/onlab/onos/event/AbstractListenerRegistry.java
similarity index 86%
rename from net/api/src/main/java/org/onlab/onos/event/AbstractListenerManager.java
rename to net/api/src/main/java/org/onlab/onos/event/AbstractListenerRegistry.java
index 0ca3b8e..5e6011a 100644
--- a/net/api/src/main/java/org/onlab/onos/event/AbstractListenerManager.java
+++ b/net/api/src/main/java/org/onlab/onos/event/AbstractListenerRegistry.java
@@ -10,10 +10,10 @@
 import static org.slf4j.LoggerFactory.getLogger;
 
 /**
- * Base implementation of a manager capable of tracking listeners and
- * dispatching events to them.
+ * Base implementation of an event sink and a registry capable of tracking
+ * listeners and dispatching events to them as part of event sink processing.
  */
-public class AbstractListenerManager<E extends Event, L extends EventListener<E>>
+public class AbstractListenerRegistry<E extends Event, L extends EventListener<E>>
         implements EventSink<E> {
 
     private final Logger log = getLogger(getClass());
diff --git a/net/api/src/main/java/org/onlab/onos/event/DefaultEventSinkBroker.java b/net/api/src/main/java/org/onlab/onos/event/DefaultEventSinkRegistry.java
similarity index 88%
rename from net/api/src/main/java/org/onlab/onos/event/DefaultEventSinkBroker.java
rename to net/api/src/main/java/org/onlab/onos/event/DefaultEventSinkRegistry.java
index c791544..1c7fb13 100644
--- a/net/api/src/main/java/org/onlab/onos/event/DefaultEventSinkBroker.java
+++ b/net/api/src/main/java/org/onlab/onos/event/DefaultEventSinkRegistry.java
@@ -10,12 +10,12 @@
 import static com.google.common.base.Preconditions.checkNotNull;
 
 /**
- * Base implementation of event sink broker.
+ * Base implementation of event sink registry.
  */
-public class DefaultEventSinkBroker implements EventSinkBroker {
+public class DefaultEventSinkRegistry implements EventSinkRegistry {
 
-    private final Map<Class<? extends Event>, EventSink<? extends Event>> sinks =
-            new ConcurrentHashMap<>();
+    private final Map<Class<? extends Event>, EventSink<? extends Event>>
+            sinks = new ConcurrentHashMap<>();
 
     @Override
     public <E extends Event> void addSink(Class<E> eventClass, EventSink<E> sink) {
diff --git a/net/api/src/main/java/org/onlab/onos/event/Event.java b/net/api/src/main/java/org/onlab/onos/event/Event.java
index 1cd49cd..baefa67 100644
--- a/net/api/src/main/java/org/onlab/onos/event/Event.java
+++ b/net/api/src/main/java/org/onlab/onos/event/Event.java
@@ -1,7 +1,7 @@
 package org.onlab.onos.event;
 
 /**
- * Abstraction of an event.
+ * Abstraction of an of a time-stamped event pertaining to an arbitrary subject.
  */
 public interface Event<T extends Enum, S extends Object> {
 
diff --git a/net/api/src/main/java/org/onlab/onos/event/EventDispatchService.java b/net/api/src/main/java/org/onlab/onos/event/EventDeliveryService.java
similarity index 67%
rename from net/api/src/main/java/org/onlab/onos/event/EventDispatchService.java
rename to net/api/src/main/java/org/onlab/onos/event/EventDeliveryService.java
index 8df68bb..4b7a52d 100644
--- a/net/api/src/main/java/org/onlab/onos/event/EventDispatchService.java
+++ b/net/api/src/main/java/org/onlab/onos/event/EventDeliveryService.java
@@ -4,5 +4,5 @@
  * Abstraction of an entity capable of accepting events to be posted and
  * then dispatching them to the appropriate event sink.
  */
-public interface EventDispatchService extends EventDispatcher, EventSinkBroker {
+public interface EventDeliveryService extends EventDispatcher, EventSinkRegistry {
 }
diff --git a/net/api/src/main/java/org/onlab/onos/event/EventSinkBroker.java b/net/api/src/main/java/org/onlab/onos/event/EventSinkRegistry.java
similarity index 90%
rename from net/api/src/main/java/org/onlab/onos/event/EventSinkBroker.java
rename to net/api/src/main/java/org/onlab/onos/event/EventSinkRegistry.java
index 7be9562..7398de7 100644
--- a/net/api/src/main/java/org/onlab/onos/event/EventSinkBroker.java
+++ b/net/api/src/main/java/org/onlab/onos/event/EventSinkRegistry.java
@@ -3,10 +3,10 @@
 import java.util.Set;
 
 /**
- * Abstraction of an event sink broker capable of tracking sinks based on
+ * Abstraction of an event sink registry capable of tracking sinks based on
  * their event class.
  */
-public interface EventSinkBroker {
+public interface EventSinkRegistry {
 
     /**
      * Adds the specified sink for the given event class.
diff --git a/net/api/src/main/java/org/onlab/onos/net/device/DeviceProviderBroker.java b/net/api/src/main/java/org/onlab/onos/net/device/DeviceProviderBroker.java
deleted file mode 100644
index 90d060a..0000000
--- a/net/api/src/main/java/org/onlab/onos/net/device/DeviceProviderBroker.java
+++ /dev/null
@@ -1,10 +0,0 @@
-package org.onlab.onos.net.device;
-
-import org.onlab.onos.net.provider.ProviderBroker;
-
-/**
- * Abstraction of a device provider brokerage.
- */
-public interface DeviceProviderBroker
-        extends ProviderBroker<DeviceProvider, DeviceProviderService> {
-}
diff --git a/net/api/src/main/java/org/onlab/onos/net/device/DeviceProviderRegistry.java b/net/api/src/main/java/org/onlab/onos/net/device/DeviceProviderRegistry.java
new file mode 100644
index 0000000..cff252e
--- /dev/null
+++ b/net/api/src/main/java/org/onlab/onos/net/device/DeviceProviderRegistry.java
@@ -0,0 +1,10 @@
+package org.onlab.onos.net.device;
+
+import org.onlab.onos.net.provider.ProviderRegistry;
+
+/**
+ * Abstraction of a device provider registry.
+ */
+public interface DeviceProviderRegistry
+        extends ProviderRegistry<DeviceProvider, DeviceProviderService> {
+}
diff --git a/net/api/src/main/java/org/onlab/onos/net/flow/FlowRuleProviderBroker.java b/net/api/src/main/java/org/onlab/onos/net/flow/FlowRuleProviderBroker.java
deleted file mode 100644
index e2bfd1c..0000000
--- a/net/api/src/main/java/org/onlab/onos/net/flow/FlowRuleProviderBroker.java
+++ /dev/null
@@ -1,10 +0,0 @@
-package org.onlab.onos.net.flow;
-
-import org.onlab.onos.net.provider.ProviderBroker;
-
-/**
- * Abstraction for a flow rule provider brokerage.
- */
-public interface FlowRuleProviderBroker
-        extends ProviderBroker<FlowRuleProvider, FlowRuleProviderService> {
-}
diff --git a/net/api/src/main/java/org/onlab/onos/net/flow/FlowRuleProviderRegistry.java b/net/api/src/main/java/org/onlab/onos/net/flow/FlowRuleProviderRegistry.java
new file mode 100644
index 0000000..099d9f4
--- /dev/null
+++ b/net/api/src/main/java/org/onlab/onos/net/flow/FlowRuleProviderRegistry.java
@@ -0,0 +1,10 @@
+package org.onlab.onos.net.flow;
+
+import org.onlab.onos.net.provider.ProviderRegistry;
+
+/**
+ * Abstraction for a flow rule provider registry.
+ */
+public interface FlowRuleProviderRegistry
+        extends ProviderRegistry<FlowRuleProvider, FlowRuleProviderService> {
+}
diff --git a/net/api/src/main/java/org/onlab/onos/net/host/HostProviderBroker.java b/net/api/src/main/java/org/onlab/onos/net/host/HostProviderBroker.java
deleted file mode 100644
index c99d436..0000000
--- a/net/api/src/main/java/org/onlab/onos/net/host/HostProviderBroker.java
+++ /dev/null
@@ -1,10 +0,0 @@
-package org.onlab.onos.net.host;
-
-import org.onlab.onos.net.provider.ProviderBroker;
-
-/**
- * Abstraction of a host provider brokerage.
- */
-public interface HostProviderBroker
-        extends ProviderBroker<HostProvider, HostProviderService> {
-}
diff --git a/net/api/src/main/java/org/onlab/onos/net/host/HostProviderRegistry.java b/net/api/src/main/java/org/onlab/onos/net/host/HostProviderRegistry.java
new file mode 100644
index 0000000..76f281e
--- /dev/null
+++ b/net/api/src/main/java/org/onlab/onos/net/host/HostProviderRegistry.java
@@ -0,0 +1,10 @@
+package org.onlab.onos.net.host;
+
+import org.onlab.onos.net.provider.ProviderRegistry;
+
+/**
+ * Abstraction of a host provider registry.
+ */
+public interface HostProviderRegistry
+        extends ProviderRegistry<HostProvider, HostProviderService> {
+}
diff --git a/net/api/src/main/java/org/onlab/onos/net/link/LinkProviderBroker.java b/net/api/src/main/java/org/onlab/onos/net/link/LinkProviderBroker.java
deleted file mode 100644
index fc58f2c..0000000
--- a/net/api/src/main/java/org/onlab/onos/net/link/LinkProviderBroker.java
+++ /dev/null
@@ -1,10 +0,0 @@
-package org.onlab.onos.net.link;
-
-import org.onlab.onos.net.provider.ProviderBroker;
-
-/**
- * Abstraction of an infrastructure link provider brokerage.
- */
-public interface LinkProviderBroker
-        extends ProviderBroker<LinkProvider, LinkProviderService> {
-}
diff --git a/net/api/src/main/java/org/onlab/onos/net/link/LinkProviderRegistry.java b/net/api/src/main/java/org/onlab/onos/net/link/LinkProviderRegistry.java
new file mode 100644
index 0000000..2aa54e7
--- /dev/null
+++ b/net/api/src/main/java/org/onlab/onos/net/link/LinkProviderRegistry.java
@@ -0,0 +1,10 @@
+package org.onlab.onos.net.link;
+
+import org.onlab.onos.net.provider.ProviderRegistry;
+
+/**
+ * Abstraction of an infrastructure link provider registry.
+ */
+public interface LinkProviderRegistry
+        extends ProviderRegistry<LinkProvider, LinkProviderService> {
+}
diff --git a/net/api/src/main/java/org/onlab/onos/net/provider/AbstractProviderBroker.java b/net/api/src/main/java/org/onlab/onos/net/provider/AbstractProviderRegistry.java
similarity index 87%
rename from net/api/src/main/java/org/onlab/onos/net/provider/AbstractProviderBroker.java
rename to net/api/src/main/java/org/onlab/onos/net/provider/AbstractProviderRegistry.java
index ad1e0ab..6975447 100644
--- a/net/api/src/main/java/org/onlab/onos/net/provider/AbstractProviderBroker.java
+++ b/net/api/src/main/java/org/onlab/onos/net/provider/AbstractProviderRegistry.java
@@ -7,13 +7,13 @@
 import static com.google.common.base.Preconditions.checkNotNull;
 
 /**
- * Base implementation of provider broker.
+ * Base implementation of provider registry.
  *
  * @param <P> type of the information provider
  * @param <S> type of the provider service
  */
-public abstract class AbstractProviderBroker<P extends Provider, S extends ProviderService<P>>
-        implements ProviderBroker<P, S> {
+public abstract class AbstractProviderRegistry<P extends Provider, S extends ProviderService<P>>
+        implements ProviderRegistry<P, S> {
 
     private final Map<ProviderId, S> services = new HashMap<>();
 
diff --git a/net/api/src/main/java/org/onlab/onos/net/provider/ProviderBroker.java b/net/api/src/main/java/org/onlab/onos/net/provider/ProviderRegistry.java
similarity index 84%
rename from net/api/src/main/java/org/onlab/onos/net/provider/ProviderBroker.java
rename to net/api/src/main/java/org/onlab/onos/net/provider/ProviderRegistry.java
index 438fdb7..93436fc 100644
--- a/net/api/src/main/java/org/onlab/onos/net/provider/ProviderBroker.java
+++ b/net/api/src/main/java/org/onlab/onos/net/provider/ProviderRegistry.java
@@ -1,12 +1,12 @@
 package org.onlab.onos.net.provider;
 
 /**
- * Broker used for registering/unregistering information providers with the core.
+ * Registry for tracking information providers with the core.
  *
  * @param <P> type of the information provider
  * @param <S> type of the provider service
  */
-public interface ProviderBroker<P extends Provider, S extends ProviderService<P>> {
+public interface ProviderRegistry<P extends Provider, S extends ProviderService<P>> {
 
     /**
      * Registers the supplied provider with the core.
diff --git a/net/api/src/main/java/org/onlab/onos/net/topology/TopologyProviderBroker.java b/net/api/src/main/java/org/onlab/onos/net/topology/TopologyProviderBroker.java
deleted file mode 100644
index d3f7e50..0000000
--- a/net/api/src/main/java/org/onlab/onos/net/topology/TopologyProviderBroker.java
+++ /dev/null
@@ -1,10 +0,0 @@
-package org.onlab.onos.net.topology;
-
-import org.onlab.onos.net.provider.ProviderBroker;
-
-/**
- * Abstraction of a network topology provider brokerage.
- */
-public interface TopologyProviderBroker extends
-        ProviderBroker<TopologyProvider, TopologyProviderService> {
-}
diff --git a/net/api/src/main/java/org/onlab/onos/net/topology/TopologyProviderRegistry.java b/net/api/src/main/java/org/onlab/onos/net/topology/TopologyProviderRegistry.java
new file mode 100644
index 0000000..40bfa66
--- /dev/null
+++ b/net/api/src/main/java/org/onlab/onos/net/topology/TopologyProviderRegistry.java
@@ -0,0 +1,10 @@
+package org.onlab.onos.net.topology;
+
+import org.onlab.onos.net.provider.ProviderRegistry;
+
+/**
+ * Abstraction of a network topology provider registry.
+ */
+public interface TopologyProviderRegistry extends
+        ProviderRegistry<TopologyProvider, TopologyProviderService> {
+}
diff --git a/net/api/src/test/java/org/onlab/onos/event/AbstractListenerManagerTest.java b/net/api/src/test/java/org/onlab/onos/event/AbstractListenerRegistryTest.java
similarity index 89%
rename from net/api/src/test/java/org/onlab/onos/event/AbstractListenerManagerTest.java
rename to net/api/src/test/java/org/onlab/onos/event/AbstractListenerRegistryTest.java
index effcc79..e41eb27 100644
--- a/net/api/src/test/java/org/onlab/onos/event/AbstractListenerManagerTest.java
+++ b/net/api/src/test/java/org/onlab/onos/event/AbstractListenerRegistryTest.java
@@ -8,13 +8,13 @@
 /**
  * Tests of the base listener manager.
  */
-public class AbstractListenerManagerTest {
+public class AbstractListenerRegistryTest {
 
     @Test
     public void basics() {
         TestListener listener = new TestListener();
         TestListener secondListener = new TestListener();
-        TestListenerManager manager = new TestListenerManager();
+        TestListenerRegistry manager = new TestListenerRegistry();
         manager.addListener(listener);
         manager.addListener(secondListener);
 
@@ -35,7 +35,7 @@
     public void badListener() {
         TestListener listener = new BrokenListener();
         TestListener secondListener = new TestListener();
-        TestListenerManager manager = new TestListenerManager();
+        TestListenerRegistry manager = new TestListenerRegistry();
         manager.addListener(listener);
         manager.addListener(secondListener);
 
diff --git a/net/api/src/test/java/org/onlab/onos/event/DefaultEventSinkBrokerTest.java b/net/api/src/test/java/org/onlab/onos/event/DefaultEventSinkBrokerTest.java
deleted file mode 100644
index f676325..0000000
--- a/net/api/src/test/java/org/onlab/onos/event/DefaultEventSinkBrokerTest.java
+++ /dev/null
@@ -1,52 +0,0 @@
-package org.onlab.onos.event;
-
-import org.junit.Before;
-import org.junit.Test;
-
-import static org.junit.Assert.*;
-
-/**
- * Tests of the default event sink broker.
- */
-public class DefaultEventSinkBrokerTest {
-
-    private DefaultEventSinkBroker broker;
-
-    private static class FooEvent extends TestEvent {
-        public FooEvent(String subject) { super(Type.FOO, subject); }
-    }
-
-    private static class BarEvent extends TestEvent {
-        public BarEvent(String subject) { super(Type.BAR, subject); }
-    }
-
-    private static class FooSink implements EventSink<FooEvent> {
-        @Override public void process(FooEvent event) {}
-    }
-
-    private static class BarSink implements EventSink<BarEvent> {
-        @Override public void process(BarEvent event) {}
-    }
-
-    @Before
-    public void setUp() {
-        broker = new DefaultEventSinkBroker();
-    }
-
-    @Test
-    public void basics() {
-        FooSink fooSink = new FooSink();
-        BarSink barSink = new BarSink();
-        broker.addSink(FooEvent.class, fooSink);
-        broker.addSink(BarEvent.class, barSink);
-
-        assertEquals("incorrect sink count", 2, broker.getSinks().size());
-        assertEquals("incorrect sink", fooSink, broker.getSink(FooEvent.class));
-        assertEquals("incorrect sink", barSink, broker.getSink(BarEvent.class));
-
-        broker.removeSink(FooEvent.class);
-        assertNull("incorrect sink", broker.getSink(FooEvent.class));
-        assertEquals("incorrect sink", barSink, broker.getSink(BarEvent.class));
-
-    }
-}
diff --git a/net/api/src/test/java/org/onlab/onos/event/DefaultEventSinkRegistryTest.java b/net/api/src/test/java/org/onlab/onos/event/DefaultEventSinkRegistryTest.java
new file mode 100644
index 0000000..ff10b50
--- /dev/null
+++ b/net/api/src/test/java/org/onlab/onos/event/DefaultEventSinkRegistryTest.java
@@ -0,0 +1,52 @@
+package org.onlab.onos.event;
+
+import org.junit.Before;
+import org.junit.Test;
+
+import static org.junit.Assert.*;
+
+/**
+ * Tests of the default event sink registry.
+ */
+public class DefaultEventSinkRegistryTest {
+
+    private DefaultEventSinkRegistry registry;
+
+    private static class FooEvent extends TestEvent {
+        public FooEvent(String subject) { super(Type.FOO, subject); }
+    }
+
+    private static class BarEvent extends TestEvent {
+        public BarEvent(String subject) { super(Type.BAR, subject); }
+    }
+
+    private static class FooSink implements EventSink<FooEvent> {
+        @Override public void process(FooEvent event) {}
+    }
+
+    private static class BarSink implements EventSink<BarEvent> {
+        @Override public void process(BarEvent event) {}
+    }
+
+    @Before
+    public void setUp() {
+        registry = new DefaultEventSinkRegistry();
+    }
+
+    @Test
+    public void basics() {
+        FooSink fooSink = new FooSink();
+        BarSink barSink = new BarSink();
+        registry.addSink(FooEvent.class, fooSink);
+        registry.addSink(BarEvent.class, barSink);
+
+        assertEquals("incorrect sink count", 2, registry.getSinks().size());
+        assertEquals("incorrect sink", fooSink, registry.getSink(FooEvent.class));
+        assertEquals("incorrect sink", barSink, registry.getSink(BarEvent.class));
+
+        registry.removeSink(FooEvent.class);
+        assertNull("incorrect sink", registry.getSink(FooEvent.class));
+        assertEquals("incorrect sink", barSink, registry.getSink(BarEvent.class));
+
+    }
+}
diff --git a/net/api/src/test/java/org/onlab/onos/event/TestListenerManager.java b/net/api/src/test/java/org/onlab/onos/event/TestListenerRegistry.java
similarity index 77%
rename from net/api/src/test/java/org/onlab/onos/event/TestListenerManager.java
rename to net/api/src/test/java/org/onlab/onos/event/TestListenerRegistry.java
index a9f6213..e676030 100644
--- a/net/api/src/test/java/org/onlab/onos/event/TestListenerManager.java
+++ b/net/api/src/test/java/org/onlab/onos/event/TestListenerRegistry.java
@@ -6,8 +6,8 @@
 /**
  * Test event listener manager fixture.
  */
-public class TestListenerManager
-        extends AbstractListenerManager<TestEvent, TestListener> {
+public class TestListenerRegistry
+        extends AbstractListenerRegistry<TestEvent, TestListener> {
 
     public final List<Throwable> errors = new ArrayList<>();
 
diff --git a/net/core/trivial/src/main/java/org/onlab/onos/event/impl/SimpleEventDispatcher.java b/net/core/trivial/src/main/java/org/onlab/onos/event/impl/SimpleEventDispatcher.java
index 7ef8735..da919e4 100644
--- a/net/core/trivial/src/main/java/org/onlab/onos/event/impl/SimpleEventDispatcher.java
+++ b/net/core/trivial/src/main/java/org/onlab/onos/event/impl/SimpleEventDispatcher.java
@@ -5,9 +5,9 @@
 import org.apache.felix.scr.annotations.Deactivate;
 import org.apache.felix.scr.annotations.Service;
 import org.onlab.onos.event.AbstractEvent;
-import org.onlab.onos.event.DefaultEventSinkBroker;
+import org.onlab.onos.event.DefaultEventSinkRegistry;
 import org.onlab.onos.event.Event;
-import org.onlab.onos.event.EventDispatchService;
+import org.onlab.onos.event.EventDeliveryService;
 import org.onlab.onos.event.EventSink;
 import org.slf4j.Logger;
 
@@ -24,8 +24,8 @@
  */
 @Component(immediate = true)
 @Service
-public class SimpleEventDispatcher extends DefaultEventSinkBroker
-        implements EventDispatchService {
+public class SimpleEventDispatcher extends DefaultEventSinkRegistry
+        implements EventDeliveryService {
 
     private final Logger log = getLogger(getClass());
 
diff --git a/net/core/trivial/src/main/java/org/onlab/onos/net/trivial/impl/SimpleDeviceManager.java b/net/core/trivial/src/main/java/org/onlab/onos/net/trivial/impl/SimpleDeviceManager.java
index a293183..4344fd0 100644
--- a/net/core/trivial/src/main/java/org/onlab/onos/net/trivial/impl/SimpleDeviceManager.java
+++ b/net/core/trivial/src/main/java/org/onlab/onos/net/trivial/impl/SimpleDeviceManager.java
@@ -6,8 +6,8 @@
 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.event.AbstractListenerRegistry;
+import org.onlab.onos.event.EventDeliveryService;
 import org.onlab.onos.net.Device;
 import org.onlab.onos.net.DeviceId;
 import org.onlab.onos.net.MastershipRole;
@@ -17,11 +17,11 @@
 import org.onlab.onos.net.device.DeviceEvent;
 import org.onlab.onos.net.device.DeviceListener;
 import org.onlab.onos.net.device.DeviceProvider;
-import org.onlab.onos.net.device.DeviceProviderBroker;
+import org.onlab.onos.net.device.DeviceProviderRegistry;
 import org.onlab.onos.net.device.DeviceProviderService;
 import org.onlab.onos.net.device.DeviceService;
 import org.onlab.onos.net.device.PortDescription;
-import org.onlab.onos.net.provider.AbstractProviderBroker;
+import org.onlab.onos.net.provider.AbstractProviderRegistry;
 import org.onlab.onos.net.provider.AbstractProviderService;
 import org.slf4j.Logger;
 
@@ -36,8 +36,8 @@
 @Component(immediate = true)
 @Service
 public class SimpleDeviceManager
-        extends AbstractProviderBroker<DeviceProvider, DeviceProviderService>
-        implements DeviceService, DeviceProviderBroker {
+        extends AbstractProviderRegistry<DeviceProvider, DeviceProviderService>
+        implements DeviceService, DeviceProviderRegistry {
 
     public static final String DEVICE_ID_NULL = "Device ID cannot be null";
     public static final String PORT_NUMBER_NULL = "Port number cannot be null";
@@ -46,17 +46,17 @@
 
     private final Logger log = getLogger(getClass());
 
-    private final AbstractListenerManager<DeviceEvent, DeviceListener>
-            listenerManager = new AbstractListenerManager<>();
+    private final AbstractListenerRegistry<DeviceEvent, DeviceListener>
+            listenerRegistry = new AbstractListenerRegistry<>();
 
     private final DeviceStore store = new DeviceStore();
 
     @Reference(cardinality = ReferenceCardinality.MANDATORY_UNARY)
-    private EventDispatchService eventDispatcher;
+    private EventDeliveryService eventDispatcher;
 
     @Activate
     public void activate() {
-        eventDispatcher.addSink(DeviceEvent.class, listenerManager);
+        eventDispatcher.addSink(DeviceEvent.class, listenerRegistry);
         log.info("Started");
     }
 
@@ -98,12 +98,12 @@
 
     @Override
     public void addListener(DeviceListener listener) {
-        listenerManager.addListener(listener);
+        listenerRegistry.addListener(listener);
     }
 
     @Override
     public void removeListener(DeviceListener listener) {
-        listenerManager.removeListener(listener);
+        listenerRegistry.removeListener(listener);
     }
 
     @Override
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 0c0c983..c9aa71b 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
@@ -6,15 +6,15 @@
 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.event.AbstractListenerRegistry;
+import org.onlab.onos.event.EventDeliveryService;
 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.HostProviderRegistry;
 import org.onlab.onos.net.host.HostProviderService;
-import org.onlab.onos.net.provider.AbstractProviderBroker;
+import org.onlab.onos.net.provider.AbstractProviderRegistry;
 import org.onlab.onos.net.provider.AbstractProviderService;
 import org.slf4j.Logger;
 
@@ -26,21 +26,21 @@
 @Component(immediate = true)
 @Service
 public class SimpleHostManager
-        extends AbstractProviderBroker<HostProvider, HostProviderService>
-        implements HostProviderBroker {
+        extends AbstractProviderRegistry<HostProvider, HostProviderService>
+        implements HostProviderRegistry {
 
     private final Logger log = getLogger(getClass());
 
-    private final AbstractListenerManager<HostEvent, HostListener>
-            listenerManager = new AbstractListenerManager<>();
+    private final AbstractListenerRegistry<HostEvent, HostListener>
+            listenerRegistry = new AbstractListenerRegistry<>();
 
     @Reference(cardinality = ReferenceCardinality.MANDATORY_UNARY)
-    private EventDispatchService eventDispatcher;
+    private EventDeliveryService eventDispatcher;
 
 
     @Activate
     public void activate() {
-        eventDispatcher.addSink(HostEvent.class, listenerManager);
+        eventDispatcher.addSink(HostEvent.class, listenerRegistry);
         log.info("Started");
     }
 
diff --git a/net/core/trivial/src/main/java/org/onlab/onos/net/trivial/impl/SimpleLinkManager.java b/net/core/trivial/src/main/java/org/onlab/onos/net/trivial/impl/SimpleLinkManager.java
index 73fedab..8efa526 100644
--- a/net/core/trivial/src/main/java/org/onlab/onos/net/trivial/impl/SimpleLinkManager.java
+++ b/net/core/trivial/src/main/java/org/onlab/onos/net/trivial/impl/SimpleLinkManager.java
@@ -6,15 +6,15 @@
 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.event.AbstractListenerRegistry;
+import org.onlab.onos.event.EventDeliveryService;
 import org.onlab.onos.net.link.LinkDescription;
 import org.onlab.onos.net.link.LinkEvent;
 import org.onlab.onos.net.link.LinkListener;
 import org.onlab.onos.net.link.LinkProvider;
-import org.onlab.onos.net.link.LinkProviderBroker;
+import org.onlab.onos.net.link.LinkProviderRegistry;
 import org.onlab.onos.net.link.LinkProviderService;
-import org.onlab.onos.net.provider.AbstractProviderBroker;
+import org.onlab.onos.net.provider.AbstractProviderRegistry;
 import org.onlab.onos.net.provider.AbstractProviderService;
 import org.slf4j.Logger;
 
@@ -26,20 +26,20 @@
 @Component(immediate = true)
 @Service
 public class SimpleLinkManager
-        extends AbstractProviderBroker<LinkProvider, LinkProviderService>
-        implements LinkProviderBroker {
+        extends AbstractProviderRegistry<LinkProvider, LinkProviderService>
+        implements LinkProviderRegistry {
 
     private final Logger log = getLogger(getClass());
 
-    private final AbstractListenerManager<LinkEvent, LinkListener>
-            listenerManager = new AbstractListenerManager<>();
+    private final AbstractListenerRegistry<LinkEvent, LinkListener>
+            listenerRegistry = new AbstractListenerRegistry<>();
 
     @Reference(cardinality = ReferenceCardinality.MANDATORY_UNARY)
-    private EventDispatchService eventDispatcher;
+    private EventDeliveryService eventDispatcher;
 
     @Activate
     public void activate() {
-        eventDispatcher.addSink(LinkEvent.class, listenerManager);
+        eventDispatcher.addSink(LinkEvent.class, listenerRegistry);
         log.info("Started");
     }
 
diff --git a/providers/of/device/src/main/java/org/onlab/onos/provider/of/device/impl/OpenFlowDeviceProvider.java b/providers/of/device/src/main/java/org/onlab/onos/provider/of/device/impl/OpenFlowDeviceProvider.java
index 5977848..f63b448 100644
--- a/providers/of/device/src/main/java/org/onlab/onos/provider/of/device/impl/OpenFlowDeviceProvider.java
+++ b/providers/of/device/src/main/java/org/onlab/onos/provider/of/device/impl/OpenFlowDeviceProvider.java
@@ -8,7 +8,7 @@
 import org.onlab.onos.net.Device;
 import org.onlab.onos.net.MastershipRole;
 import org.onlab.onos.net.device.DeviceProvider;
-import org.onlab.onos.net.device.DeviceProviderBroker;
+import org.onlab.onos.net.device.DeviceProviderRegistry;
 import org.onlab.onos.net.device.DeviceProviderService;
 import org.onlab.onos.net.provider.AbstractProvider;
 import org.onlab.onos.net.provider.ProviderId;
@@ -27,7 +27,7 @@
     private final Logger log = getLogger(getClass());
 
     @Reference(cardinality = ReferenceCardinality.MANDATORY_UNARY)
-    protected DeviceProviderBroker providerBroker;
+    protected DeviceProviderRegistry providerRegistry;
 
     @Reference(cardinality = ReferenceCardinality.MANDATORY_UNARY)
     protected OpenFlowController controller;
@@ -43,13 +43,13 @@
 
     @Activate
     public void activate() {
-        providerService = providerBroker.register(this);
+        providerService = providerRegistry.register(this);
         log.info("Started");
     }
 
     @Deactivate
     public void deactivate() {
-        providerBroker.unregister(this);
+        providerRegistry.unregister(this);
         providerService = null;
         log.info("Stopped");
     }
diff --git a/providers/of/host/src/main/java/org/onlab/onos/provider/of/host/impl/OpenFlowHostProvider.java b/providers/of/host/src/main/java/org/onlab/onos/provider/of/host/impl/OpenFlowHostProvider.java
index 2faeb43..2421481 100644
--- a/providers/of/host/src/main/java/org/onlab/onos/provider/of/host/impl/OpenFlowHostProvider.java
+++ b/providers/of/host/src/main/java/org/onlab/onos/provider/of/host/impl/OpenFlowHostProvider.java
@@ -7,7 +7,7 @@
 import org.apache.felix.scr.annotations.ReferenceCardinality;
 import org.onlab.onos.net.Host;
 import org.onlab.onos.net.host.HostProvider;
-import org.onlab.onos.net.host.HostProviderBroker;
+import org.onlab.onos.net.host.HostProviderRegistry;
 import org.onlab.onos.net.host.HostProviderService;
 import org.onlab.onos.net.provider.AbstractProvider;
 import org.onlab.onos.net.provider.ProviderId;
@@ -26,7 +26,7 @@
     private final Logger log = getLogger(getClass());
 
     @Reference(cardinality = ReferenceCardinality.MANDATORY_UNARY)
-    protected HostProviderBroker providerBroker;
+    protected HostProviderRegistry providerRegistry;
 
     @Reference(cardinality = ReferenceCardinality.MANDATORY_UNARY)
     protected OpenFlowController controller;
@@ -42,13 +42,13 @@
 
     @Activate
     public void activate() {
-        providerService = providerBroker.register(this);
+        providerService = providerRegistry.register(this);
         log.info("Started");
     }
 
     @Deactivate
     public void deactivate() {
-        providerBroker.unregister(this);
+        providerRegistry.unregister(this);
         providerService = null;
         log.info("Stopped");
     }
diff --git a/providers/of/link/src/main/java/org/onlab/onos/provider/of/link/impl/OpenFlowLinkProvider.java b/providers/of/link/src/main/java/org/onlab/onos/provider/of/link/impl/OpenFlowLinkProvider.java
index dacf3a8..314564d 100644
--- a/providers/of/link/src/main/java/org/onlab/onos/provider/of/link/impl/OpenFlowLinkProvider.java
+++ b/providers/of/link/src/main/java/org/onlab/onos/provider/of/link/impl/OpenFlowLinkProvider.java
@@ -6,7 +6,7 @@
 import org.apache.felix.scr.annotations.Reference;
 import org.apache.felix.scr.annotations.ReferenceCardinality;
 import org.onlab.onos.net.link.LinkProvider;
-import org.onlab.onos.net.link.LinkProviderBroker;
+import org.onlab.onos.net.link.LinkProviderRegistry;
 import org.onlab.onos.net.link.LinkProviderService;
 import org.onlab.onos.net.provider.AbstractProvider;
 import org.onlab.onos.net.provider.ProviderId;
@@ -25,7 +25,7 @@
     private final Logger log = getLogger(getClass());
 
     @Reference(cardinality = ReferenceCardinality.MANDATORY_UNARY)
-    protected LinkProviderBroker providerBroker;
+    protected LinkProviderRegistry providerRegistry;
 
     @Reference(cardinality = ReferenceCardinality.MANDATORY_UNARY)
     protected OpenFlowController controller;
@@ -41,13 +41,13 @@
 
     @Activate
     public void activate() {
-        providerService = providerBroker.register(this);
+        providerService = providerRegistry.register(this);
         log.info("Started");
     }
 
     @Deactivate
     public void deactivate() {
-        providerBroker.unregister(this);
+        providerRegistry.unregister(this);
         providerService = null;
         log.info("Stopped");
     }
