diff --git a/pom.xml b/pom.xml
index e30c517..2961906 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.12</version>
+    <version>2.13.1</version>
     <name>Slack Integration Plugin</name>
 
     <properties>
@@ -101,14 +101,6 @@
         </plugins>
     </build>
 
-    <repositories>
-        <repository>
-            <id>gerrit-api-repository</id>
-            <url>https://gerrit-api.commondatastorage.googleapis.com/release/
-            </url>
-        </repository>
-    </repositories>
-
     <dependencies>
         <dependency>
             <groupId>com.google.gerrit</groupId>
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 6dec3db..26a288e 100644
--- a/src/main/java/com/cisco/gerrit/plugins/slack/PublishEventListener.java
+++ b/src/main/java/com/cisco/gerrit/plugins/slack/PublishEventListener.java
@@ -62,7 +62,7 @@
                 patchSetCreatedEvent = (PatchSetCreatedEvent) event;
 
                 config = new ProjectConfig(configFactory,
-                        patchSetCreatedEvent.change.project);
+                        patchSetCreatedEvent.change.get().project);
 
                 messageGenerator = MessageGeneratorFactory.newInstance(
                         patchSetCreatedEvent, config);
@@ -73,7 +73,7 @@
                 changeMergedEvent = (ChangeMergedEvent) event;
 
                 config = new ProjectConfig(configFactory,
-                        changeMergedEvent.change.project);
+                        changeMergedEvent.change.get().project);
 
                 messageGenerator = MessageGeneratorFactory.newInstance(
                         changeMergedEvent, config);
@@ -84,7 +84,7 @@
                 commentAddedEvent = (CommentAddedEvent) event;
 
                 config = new ProjectConfig(configFactory,
-                        commentAddedEvent.change.project);
+                        commentAddedEvent.change.get().project);
 
                 messageGenerator = MessageGeneratorFactory.newInstance(
                         commentAddedEvent, config);
diff --git a/src/main/java/com/cisco/gerrit/plugins/slack/message/ChangeMergedMessageGenerator.java b/src/main/java/com/cisco/gerrit/plugins/slack/message/ChangeMergedMessageGenerator.java
index bb6184a..4ef465a 100644
--- a/src/main/java/com/cisco/gerrit/plugins/slack/message/ChangeMergedMessageGenerator.java
+++ b/src/main/java/com/cisco/gerrit/plugins/slack/message/ChangeMergedMessageGenerator.java
@@ -79,15 +79,15 @@
             StringBuilder text;
             text = new StringBuilder();
 
-            text.append(escape(event.submitter.name));
+            text.append(escape(event.submitter.get().name));
             text.append(" merged\\n>>>");
-            text.append(escape(event.change.project));
+            text.append(escape(event.change.get().project));
             text.append(" (");
-            text.append(escape(event.change.branch));
+            text.append(escape(event.change.get().branch));
             text.append("): ");
-            text.append(escape(event.change.commitMessage.split("\n")[0]));
+            text.append(escape(event.change.get().commitMessage.split("\n")[0]));
             text.append(" (");
-            text.append(escape(event.change.url));
+            text.append(escape(event.change.get().url));
             text.append(")");
 
             message = String.format(template, text, config.getChannel(),
diff --git a/src/main/java/com/cisco/gerrit/plugins/slack/message/CommentAddedMessageGenerator.java b/src/main/java/com/cisco/gerrit/plugins/slack/message/CommentAddedMessageGenerator.java
index 6a477b9..5379a10 100644
--- a/src/main/java/com/cisco/gerrit/plugins/slack/message/CommentAddedMessageGenerator.java
+++ b/src/main/java/com/cisco/gerrit/plugins/slack/message/CommentAddedMessageGenerator.java
@@ -80,15 +80,15 @@
             StringBuilder text;
             text = new StringBuilder();
 
-            text.append(escape(event.author.name));
+            text.append(escape(event.author.get().name));
             text.append(" commented\\n>>>");
-            text.append(escape(event.change.project));
+            text.append(escape(event.change.get().project));
             text.append(" (");
-            text.append(escape(event.change.branch));
+            text.append(escape(event.change.get().branch));
             text.append("): ");
             text.append(escape(Ascii.truncate(event.comment, 200, "...")));
             text.append(" (");
-            text.append(escape(event.change.url));
+            text.append(escape(event.change.get().url));
             text.append(")");
 
             message = String.format(template, text, config.getChannel(),
diff --git a/src/main/java/com/cisco/gerrit/plugins/slack/message/PatchSetCreatedMessageGenerator.java b/src/main/java/com/cisco/gerrit/plugins/slack/message/PatchSetCreatedMessageGenerator.java
index 774c622..4147dd7 100644
--- a/src/main/java/com/cisco/gerrit/plugins/slack/message/PatchSetCreatedMessageGenerator.java
+++ b/src/main/java/com/cisco/gerrit/plugins/slack/message/PatchSetCreatedMessageGenerator.java
@@ -73,7 +73,7 @@
             pattern = Pattern.compile(config.getIgnore(), Pattern.DOTALL);
 
             Matcher matcher;
-            matcher = pattern.matcher(event.change.commitMessage);
+            matcher = pattern.matcher(event.change.get().commitMessage);
 
             // If the ignore pattern matches, publishing should not happen
             result = !matcher.matches();
@@ -101,15 +101,15 @@
             StringBuilder text;
             text = new StringBuilder();
 
-            text.append(escape(event.uploader.name));
+            text.append(escape(event.uploader.get().name));
             text.append(" proposed\\n>>>");
-            text.append(escape(event.change.project));
+            text.append(escape(event.change.get().project));
             text.append(" (");
-            text.append(escape(event.change.branch));
+            text.append(escape(event.change.get().branch));
             text.append("): ");
-            text.append(escape(event.change.commitMessage.split("\n")[0]));
+            text.append(escape(event.change.get().commitMessage.split("\n")[0]));
             text.append(" (");
-            text.append(escape(event.change.url));
+            text.append(escape(event.change.get().url));
             text.append(")");
 
             message = String.format(template, text, config.getChannel(),
diff --git a/src/test/java/com/cisco/gerrit/plugins/slack/message/ChangeMergedMessageGeneratorTest.java b/src/test/java/com/cisco/gerrit/plugins/slack/message/ChangeMergedMessageGeneratorTest.java
index 49ee3db..a6851ca 100644
--- a/src/test/java/com/cisco/gerrit/plugins/slack/message/ChangeMergedMessageGeneratorTest.java
+++ b/src/test/java/com/cisco/gerrit/plugins/slack/message/ChangeMergedMessageGeneratorTest.java
@@ -18,6 +18,7 @@
 package com.cisco.gerrit.plugins.slack.message;
 
 import com.cisco.gerrit.plugins.slack.config.ProjectConfig;
+import com.google.common.base.Suppliers;
 import com.google.gerrit.reviewdb.client.Project;
 import com.google.gerrit.server.config.PluginConfig;
 import com.google.gerrit.server.config.PluginConfigFactory;
@@ -106,7 +107,7 @@
     public void publishesWhenExpected() throws Exception
     {
         // Setup mocks
-        mockEvent.change = mockChange;
+        mockEvent.change = Suppliers.ofInstance(mockChange);
         mockChange.commitMessage = "This is a title\nAnd a the body.";
 
         // Test
@@ -121,7 +122,7 @@
     public void doesNotPublishWhenExpected() throws Exception
     {
         // Setup mocks
-        mockEvent.change = mockChange;
+        mockEvent.change = Suppliers.ofInstance(mockChange);
         mockChange.commitMessage = "WIP:This is a title\nAnd a the body.";
 
         // Test
@@ -150,8 +151,8 @@
     public void generatesExpectedMessage() throws Exception
     {
         // Setup mocks
-        mockEvent.change = mockChange;
-        mockEvent.submitter = mockAccount;
+        mockEvent.change = Suppliers.ofInstance(mockChange);
+        mockEvent.submitter = Suppliers.ofInstance(mockAccount);
 
         mockChange.project = "testproject";
         mockChange.branch = "master";
diff --git a/src/test/java/com/cisco/gerrit/plugins/slack/message/CommentAddedMessageGeneratorTest.java b/src/test/java/com/cisco/gerrit/plugins/slack/message/CommentAddedMessageGeneratorTest.java
index ce16c7f..dce6fc7 100644
--- a/src/test/java/com/cisco/gerrit/plugins/slack/message/CommentAddedMessageGeneratorTest.java
+++ b/src/test/java/com/cisco/gerrit/plugins/slack/message/CommentAddedMessageGeneratorTest.java
@@ -18,6 +18,7 @@
 package com.cisco.gerrit.plugins.slack.message;
 
 import com.cisco.gerrit.plugins.slack.config.ProjectConfig;
+import com.google.common.base.Suppliers;
 import com.google.gerrit.reviewdb.client.Project;
 import com.google.gerrit.server.config.PluginConfig;
 import com.google.gerrit.server.config.PluginConfigFactory;
@@ -148,8 +149,8 @@
     public void generatesExpectedMessage() throws Exception
     {
         // Setup mocks
-        mockEvent.change = mockChange;
-        mockEvent.author = mockAccount;
+        mockEvent.change = Suppliers.ofInstance(mockChange);
+        mockEvent.author = Suppliers.ofInstance(mockAccount);
 
         mockEvent.comment = "This is the first line\nAnd the second line.";
 
@@ -180,8 +181,8 @@
     public void generatesExpectedMessageForLongComment() throws Exception
     {
         // Setup mocks
-        mockEvent.change = mockChange;
-        mockEvent.author = mockAccount;
+        mockEvent.change = Suppliers.ofInstance(mockChange);
+        mockEvent.author = Suppliers.ofInstance(mockAccount);
 
         mockEvent.comment = "Lorem ipsum dolor sit amet, consectetur adipiscing elit. " +
                 "Integer tristique ligula nec dapibus lobortis. Nulla venenatis, lacus quis vulputate volutpat, " +
diff --git a/src/test/java/com/cisco/gerrit/plugins/slack/message/PatchSetCreatedMessageGeneratorTest.java b/src/test/java/com/cisco/gerrit/plugins/slack/message/PatchSetCreatedMessageGeneratorTest.java
index e534600..9f4535c 100644
--- a/src/test/java/com/cisco/gerrit/plugins/slack/message/PatchSetCreatedMessageGeneratorTest.java
+++ b/src/test/java/com/cisco/gerrit/plugins/slack/message/PatchSetCreatedMessageGeneratorTest.java
@@ -18,6 +18,7 @@
 package com.cisco.gerrit.plugins.slack.message;
 
 import com.cisco.gerrit.plugins.slack.config.ProjectConfig;
+import com.google.common.base.Suppliers;
 import com.google.gerrit.reviewdb.client.Project;
 import com.google.gerrit.server.config.PluginConfig;
 import com.google.gerrit.server.config.PluginConfigFactory;
@@ -104,7 +105,7 @@
     public void publishesWhenExpected() throws Exception
     {
         // Setup mocks
-        mockEvent.change = mockChange;
+        mockEvent.change = Suppliers.ofInstance(mockChange);
         mockChange.commitMessage = "This is a title\nAnd a the body.";
 
         // Test
@@ -119,7 +120,7 @@
     public void doesNotPublishWhenExpected() throws Exception
     {
         // Setup mocks
-        mockEvent.change = mockChange;
+        mockEvent.change = Suppliers.ofInstance(mockChange);
         mockChange.commitMessage = "WIP-This is a title\nAnd a the body.";
 
         // Test
@@ -148,8 +149,8 @@
     public void generatesExpectedMessage() throws Exception
     {
         // Setup mocks
-        mockEvent.change = mockChange;
-        mockEvent.uploader = mockAccount;
+        mockEvent.change = Suppliers.ofInstance(mockChange);
+        mockEvent.uploader = Suppliers.ofInstance(mockAccount);
 
         mockChange.project = "testproject";
         mockChange.branch = "master";
