diff --git a/pom.xml b/pom.xml
index 1aac62d..e30c517 100644
--- a/pom.xml
+++ b/pom.xml
@@ -25,14 +25,14 @@
     <groupId>com.cisco.gerrit.plugins</groupId>
     <artifactId>slack-integration</artifactId>
     <packaging>jar</packaging>
-    <version>2.9</version>
+    <version>2.12</version>
     <name>Slack Integration Plugin</name>
 
     <properties>
         <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
 
         <gerrit-api-type>plugin</gerrit-api-type>
-        <gerrit-api-version>2.9</gerrit-api-version>
+        <gerrit-api-version>${project.version}</gerrit-api-version>
     </properties>
 
     <build>
diff --git a/src/main/java/com/cisco/gerrit/plugins/slack/EventListener.java b/src/main/java/com/cisco/gerrit/plugins/slack/PublishEventListener.java
similarity index 92%
rename from src/main/java/com/cisco/gerrit/plugins/slack/EventListener.java
rename to src/main/java/com/cisco/gerrit/plugins/slack/PublishEventListener.java
index b4c4ca5..2c7dead 100644
--- a/src/main/java/com/cisco/gerrit/plugins/slack/EventListener.java
+++ b/src/main/java/com/cisco/gerrit/plugins/slack/PublishEventListener.java
@@ -21,11 +21,11 @@
 import com.cisco.gerrit.plugins.slack.config.ProjectConfig;
 import com.cisco.gerrit.plugins.slack.message.MessageGenerator;
 import com.cisco.gerrit.plugins.slack.message.MessageGeneratorFactory;
-import com.google.gerrit.common.ChangeListener;
+import com.google.gerrit.common.EventListener;
 import com.google.gerrit.extensions.annotations.Listen;
 import com.google.gerrit.server.config.PluginConfigFactory;
-import com.google.gerrit.server.events.ChangeEvent;
 import com.google.gerrit.server.events.ChangeMergedEvent;
+import com.google.gerrit.server.events.Event;
 import com.google.gerrit.server.events.PatchSetCreatedEvent;
 import com.google.inject.Inject;
 import com.google.inject.Singleton;
@@ -37,10 +37,10 @@
  */
 @Listen
 @Singleton
-public class EventListener implements ChangeListener
+public class PublishEventListener implements EventListener
 {
     private static final Logger LOGGER =
-            LoggerFactory.getLogger(EventListener.class);
+            LoggerFactory.getLogger(PublishEventListener.class);
 
     private static final String ALL_PROJECTS = "All-Projects";
 
@@ -48,7 +48,7 @@
     private PluginConfigFactory configFactory;
 
     @Override
-    public void onChangeEvent(ChangeEvent event)
+    public void onEvent(Event event)
     {
         try
         {
diff --git a/src/main/java/com/cisco/gerrit/plugins/slack/message/MessageGeneratorFactory.java b/src/main/java/com/cisco/gerrit/plugins/slack/message/MessageGeneratorFactory.java
index 5e026db..1c168e6 100644
--- a/src/main/java/com/cisco/gerrit/plugins/slack/message/MessageGeneratorFactory.java
+++ b/src/main/java/com/cisco/gerrit/plugins/slack/message/MessageGeneratorFactory.java
@@ -18,8 +18,8 @@
 package com.cisco.gerrit.plugins.slack.message;
 
 import com.cisco.gerrit.plugins.slack.config.ProjectConfig;
-import com.google.gerrit.server.events.ChangeEvent;
 import com.google.gerrit.server.events.ChangeMergedEvent;
+import com.google.gerrit.server.events.Event;
 import com.google.gerrit.server.events.PatchSetCreatedEvent;
 
 /**
@@ -71,13 +71,13 @@
     /**
      * Creates a new MessageGenerator for unsupported events.
      *
-     * @param event A ChangeEvent instance
+     * @param event An Event instance
      * @param config A ProjectConfig instance for the given event
      *
      * @return A MessageGenerator instance capable of generating a message for
-     * an unsupported ChangeEvent.
+     * an unsupported Event.
      */
-    public static MessageGenerator newInstance(ChangeEvent event,
+    public static MessageGenerator newInstance(Event event,
             ProjectConfig config)
     {
         UnsupportedMessageGenerator messageGenerator;
diff --git a/src/main/java/com/cisco/gerrit/plugins/slack/message/UnsupportedMessageGenerator.java b/src/main/java/com/cisco/gerrit/plugins/slack/message/UnsupportedMessageGenerator.java
index 6dcd767..ac5922b 100644
--- a/src/main/java/com/cisco/gerrit/plugins/slack/message/UnsupportedMessageGenerator.java
+++ b/src/main/java/com/cisco/gerrit/plugins/slack/message/UnsupportedMessageGenerator.java
@@ -18,11 +18,11 @@
 package com.cisco.gerrit.plugins.slack.message;
 
 import com.cisco.gerrit.plugins.slack.config.ProjectConfig;
-import com.google.gerrit.server.events.ChangeEvent;
+import com.google.gerrit.server.events.Event;
 
 /**
  * A specific MessageGenerator implementation that can generate a message for
- * an unsupported ChangeEvent. The default behavior for this MessageGenerator
+ * an unsupported Event. The default behavior for this MessageGenerator
  * is to flag that it should not be published.
  *
  * @author Matthew Montgomery
@@ -30,9 +30,9 @@
 public class UnsupportedMessageGenerator extends MessageGenerator
 {
     private ProjectConfig config;
-    private ChangeEvent event;
+    private Event event;
 
-    protected UnsupportedMessageGenerator(ChangeEvent event,
+    protected UnsupportedMessageGenerator(Event event,
             ProjectConfig config)
     {
         if (event == null)
@@ -56,7 +56,7 @@
         StringBuilder message;
         message = new StringBuilder();
 
-        message.append("Unsupported change event: ");
+        message.append("Unsupported event: ");
         message.append(this.event.toString());
 
         return message.toString();
diff --git a/src/test/java/com/cisco/gerrit/plugins/slack/EventListenerTest.java b/src/test/java/com/cisco/gerrit/plugins/slack/PublishEventListenerTest.java
similarity index 86%
rename from src/test/java/com/cisco/gerrit/plugins/slack/EventListenerTest.java
rename to src/test/java/com/cisco/gerrit/plugins/slack/PublishEventListenerTest.java
index bed0523..0e3bc5a 100644
--- a/src/test/java/com/cisco/gerrit/plugins/slack/EventListenerTest.java
+++ b/src/test/java/com/cisco/gerrit/plugins/slack/PublishEventListenerTest.java
@@ -25,19 +25,19 @@
 import static org.junit.Assert.assertTrue;
 import static org.mockito.Mockito.mock;
 
-public class EventListenerTest
+public class PublishEventListenerTest
 {
     private PatchSetCreatedEvent mockPatchSetCreatedEvent =
             mock(PatchSetCreatedEvent.class);
-    private ChangeMergedEvent mocChangeMergedEvent =
+    private ChangeMergedEvent mockChangeMergedEvent =
             mock(ChangeMergedEvent.class);
 
-    private EventListener eventListener;
+    private PublishEventListener publishEventListener;
 
     @Before
     public void setup() throws Exception
     {
-        eventListener = new EventListener();
+        publishEventListener = new PublishEventListener();
     }
 
     @Test
