diff --git a/briar-api/src/net/sf/briar/api/db/event/GroupMessageAddedEvent.java b/briar-api/src/net/sf/briar/api/db/event/GroupMessageAddedEvent.java
index acf9ca49bc4c39c3d16ad2cda5e832158a18d97e..0a66d81f4a21633585bee6abbbdc9af53897dfa9 100644
--- a/briar-api/src/net/sf/briar/api/db/event/GroupMessageAddedEvent.java
+++ b/briar-api/src/net/sf/briar/api/db/event/GroupMessageAddedEvent.java
@@ -1,20 +1,20 @@
 package net.sf.briar.api.db.event;
 
-import net.sf.briar.api.messaging.Message;
+import net.sf.briar.api.messaging.GroupId;
 
 /** An event that is broadcast when a group message is added to the database. */
 public class GroupMessageAddedEvent extends DatabaseEvent {
 
-	private final Message message;
+	private final GroupId groupId;
 	private final boolean incoming;
 
-	public GroupMessageAddedEvent(Message message, boolean incoming) {
-		this.message = message;
+	public GroupMessageAddedEvent(GroupId groupId, boolean incoming) {
+		this.groupId = groupId;
 		this.incoming = incoming;
 	}
 
-	public Message getMessage() {
-		return message;
+	public GroupId getGroupId() {
+		return groupId;
 	}
 
 	public boolean isIncoming() {
diff --git a/briar-api/src/net/sf/briar/api/db/event/PrivateMessageAddedEvent.java b/briar-api/src/net/sf/briar/api/db/event/PrivateMessageAddedEvent.java
index 45bcd16bd38d875fb5ce5e587f619d90139a213f..1ce1dafd373d9e6de389d8f8a1d378829c5685e0 100644
--- a/briar-api/src/net/sf/briar/api/db/event/PrivateMessageAddedEvent.java
+++ b/briar-api/src/net/sf/briar/api/db/event/PrivateMessageAddedEvent.java
@@ -1,28 +1,20 @@
 package net.sf.briar.api.db.event;
 
 import net.sf.briar.api.ContactId;
-import net.sf.briar.api.messaging.Message;
 
 /**
  * An event that is broadcast when a private message is added to the database.
  */
 public class PrivateMessageAddedEvent extends DatabaseEvent {
 
-	private final Message message;
 	private final ContactId contactId;
 	private final boolean incoming;
 
-	public PrivateMessageAddedEvent(Message message, ContactId contactId,
-			boolean incoming) {
-		this.message = message;
+	public PrivateMessageAddedEvent(ContactId contactId, boolean incoming) {
 		this.contactId = contactId;
 		this.incoming = incoming;
 	}
 
-	public Message getMessage() {
-		return message;
-	}
-
 	public ContactId getContactId() {
 		return contactId;
 	}
diff --git a/briar-core/src/net/sf/briar/db/DatabaseComponentImpl.java b/briar-core/src/net/sf/briar/db/DatabaseComponentImpl.java
index 6fa43393b25f3843d9ac753a774230702f168ca0..ba7049d256f98637338dcd9150eeb889dfdc66ba 100644
--- a/briar-core/src/net/sf/briar/db/DatabaseComponentImpl.java
+++ b/briar-core/src/net/sf/briar/db/DatabaseComponentImpl.java
@@ -287,7 +287,10 @@ DatabaseCleaner.Callback {
 		} finally {
 			contactLock.readLock().unlock();
 		}
-		if(added) callListeners(new GroupMessageAddedEvent(m, false));
+		if(added) {
+			GroupId g = m.getGroup().getId();
+			callListeners(new GroupMessageAddedEvent(g, false));
+		}
 	}
 
 	/**
@@ -400,7 +403,7 @@ DatabaseCleaner.Callback {
 		} finally {
 			contactLock.readLock().unlock();
 		}
-		if(added) callListeners(new PrivateMessageAddedEvent(m, c, false));
+		if(added) callListeners(new PrivateMessageAddedEvent(c, false));
 	}
 
 	public void addSecrets(Collection<TemporarySecret> secrets)
@@ -1352,9 +1355,9 @@ DatabaseCleaner.Callback {
 		}
 		callListeners(new MessageReceivedEvent(c));
 		if(added) {
-			if(m.getGroup() == null)
-				callListeners(new PrivateMessageAddedEvent(m, c, true));
-			else callListeners(new GroupMessageAddedEvent(m, true));
+			Group g = m.getGroup();
+			if(g == null) callListeners(new PrivateMessageAddedEvent(c, true));
+			else callListeners(new GroupMessageAddedEvent(g.getId(), true));
 		}
 	}