diff --git a/pom.xml b/pom.xml
index c3e0575..23bd031 100644
--- a/pom.xml
+++ b/pom.xml
@@ -25,7 +25,7 @@
     <groupId>com.cisco.gerrit.plugins</groupId>
     <artifactId>slack-integration</artifactId>
     <packaging>jar</packaging>
-    <version>2.10.7</version>
+    <version>2.11</version>
     <name>Slack Integration Plugin</name>
 
     <properties>
diff --git a/src/main/java/com/cisco/gerrit/plugins/slack/PublishEventListener.java b/src/main/java/com/cisco/gerrit/plugins/slack/PublishEventListener.java
index baab6e0..6dec3db 100644
--- a/src/main/java/com/cisco/gerrit/plugins/slack/PublishEventListener.java
+++ b/src/main/java/com/cisco/gerrit/plugins/slack/PublishEventListener.java
@@ -21,12 +21,12 @@
 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.CommentAddedEvent;
+import com.google.gerrit.server.events.Event;
 import com.google.gerrit.server.events.PatchSetCreatedEvent;
 import com.google.inject.Inject;
 import com.google.inject.Singleton;
@@ -38,7 +38,7 @@
  */
 @Listen
 @Singleton
-public class PublishEventListener implements ChangeListener
+public class PublishEventListener implements EventListener
 {
     private static final Logger LOGGER =
             LoggerFactory.getLogger(PublishEventListener.class);
@@ -49,7 +49,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 5069ba8..a068c51 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,9 +18,9 @@
 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.CommentAddedEvent;
+import com.google.gerrit.server.events.Event;
 import com.google.gerrit.server.events.PatchSetCreatedEvent;
 
 /**
@@ -91,13 +91,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();
