diff --git a/src/common/connection.py b/src/common/connection.py
index 64225cbccace4c08a3e0b04a3cae7b13674fd3ae..2979a327f3337e2c1f04f53a0d439be6acb607ec 100644
--- a/src/common/connection.py
+++ b/src/common/connection.py
@@ -717,16 +717,14 @@ class Connection(ConnectionHandlers):
 		if iq_obj.getTag('error'):
 			# error, probably not a real agent
 			return
-		self.connection.getRoster().delItem(agent)
 
 	def unsubscribe_agent(self, agent):
 		if not self.connection:
 			return
 		iq = common.xmpp.Iq('set', common.xmpp.NS_REGISTER, to = agent)
 		iq.getTag('query').setTag('remove')
-		self.connection.SendAndCallForResponse(iq, self._continue_unsubscribe,
-			{'agent': agent})
-		return
+		self.connection.send(iq)
+		self.connection.getRoster().delItem(agent)
 
 	def update_contact(self, jid, name, groups):
 		'''update roster item on jabber server'''
diff --git a/src/gajim.py b/src/gajim.py
index be3010db0bcab599caca389747db44d0ee08159c..a2e3cb8a9725e356c73fa3c45de8bea5e5d2468f 100755
--- a/src/gajim.py
+++ b/src/gajim.py
@@ -965,6 +965,8 @@ class Interface:
 				#FIXME if it was the only one in its group, remove the group
 				return
 		elif not contacts:
+			if sub == 'remove':
+				return
 			# Add it to roster
 			contact = gajim.contacts.create_contact(jid = jid, name = name,
 			groups = groups, show = 'offline', sub = sub, ask = ask)