diff --git a/src/config.py b/src/config.py
index 60f840d4b650d6e598f488b36113a2f375008e83..2dc89331732fdb67e9d3a59b28543518c84063d2 100644
--- a/src/config.py
+++ b/src/config.py
@@ -19,7 +19,6 @@
 import gtk.glade
 import gobject
 import os
-import sys
 import common.config
 import common.sleepy
 
diff --git a/src/dialogs.py b/src/dialogs.py
index 9d50d9054651d5053579a3b3d1c00cd6b52812f9..925a97ccb70e5d5e3a67a2a8dc4ae7bb5cb47afc 100644
--- a/src/dialogs.py
+++ b/src/dialogs.py
@@ -22,7 +22,7 @@
 import gtk.glade
 import gobject
 import os
-import Queue
+import sys
 
 import gtkgui_helpers
 import vcard
@@ -34,9 +34,12 @@
 except:
 	HAS_GTK_SPELL = False
 
+# those imports are not used in this file, but in files that import dialog
+# so they can do dialog.GajimThemesWindow() for example
 from filetransfers_window import FileTransfersWindow
 from gajim_themes_window import GajimThemesWindow
 from advanced import AdvancedConfigurationWindow
+
 from common import gajim
 from common import helpers
 from common import i18n
@@ -1038,7 +1041,7 @@ def on_popup_notification_window_button_press_event(self, widget, event):
 			attached_keys = gajim.config.get_per('accounts', self.account,
 				'attached_gpg_keys').split()
 			if self.jid in attached_keys:
-				keyID = attached_keys[attached_keys.index(jid) + 1]
+				keyID = attached_keys[attached_keys.index(self.jid) + 1]
 			if self.msg_type.find('file') != 0:
 				if self.msg_type == 'pm':
 					room_jid, nick = self.jid.split('/', 1)
@@ -1117,7 +1120,7 @@ def __init__(self, account, to = '', action = '', from_whom = '',
 				gtkspell.Spell(self.message_textview)
 			except gobject.GError, msg:
 				#FIXME: add a ui for this use spell.set_language()
-				dialogs.ErrorDialog(unicode(msg), _('If that is not your language for which you want to highlight misspelled words, then please set your $LANG as appropriate. Eg. for French do export LANG=fr_FR or export LANG=fr_FR.UTF-8 in ~/.bash_profile or to make it global in /etc/profile.\n\nHighlighting misspelled words feature will not be used')).get_response()
+				ErrorDialog(unicode(msg), _('If that is not your language for which you want to highlight misspelled words, then please set your $LANG as appropriate. Eg. for French do export LANG=fr_FR or export LANG=fr_FR.UTF-8 in ~/.bash_profile or to make it global in /etc/profile.\n\nHighlighting misspelled words feature will not be used')).get_response()
 				gajim.config.set('use_speller', False)
 		
 		self.send_button.set_no_show_all(True)
diff --git a/src/disco.py b/src/disco.py
index 534fb04518ecd4fa6b09a6948f09279da155311b..234069ec4dc2d6449ced292f9f5f752351951bd9 100644
--- a/src/disco.py
+++ b/src/disco.py
@@ -57,10 +57,8 @@
 import dialogs
 import tooltips
 
-from common import helpers
 from common import gajim
 from common import xmpp
-from common import connection
 from common import i18n
 
 _ = i18n._
diff --git a/src/filetransfers_window.py b/src/filetransfers_window.py
index 71704761c33c1c17fe61df89c59a8e996700ad9b..1c4ff93781fbb666a95d5054b42690665b2bbed3 100644
--- a/src/filetransfers_window.py
+++ b/src/filetransfers_window.py
@@ -23,7 +23,6 @@
 import gobject
 import pango
 import os
-import sys
 import time
 
 import gtkgui_helpers
diff --git a/src/gajim-remote.py b/src/gajim-remote.py
index 9ad75e97a3a4c97acfea34ce056e949266b30919..5cb77f2597090a29548e0cf0045ffa9978041b7b 100755
--- a/src/gajim-remote.py
+++ b/src/gajim-remote.py
@@ -34,8 +34,6 @@
 import locale
 import signal
 signal.signal(signal.SIGINT, signal.SIG_DFL) # ^C exits the application
-import traceback
-import gobject
 
 from common import exceptions
 from common import i18n
diff --git a/src/gajim.py b/src/gajim.py
index 1415fa1dfc70f0544046735fea024b82ebd95116..3048101e092fef535f5b9d51320e78b04be8bbc2 100755
--- a/src/gajim.py
+++ b/src/gajim.py
@@ -31,7 +31,6 @@
 
 import sys
 import os
-import pygtk
 
 import message_control
 
@@ -90,10 +89,7 @@
 del path
 
 import gobject
-# TODO remove this comment
-# testing how it works without threads_init
 
-import pango
 import sre
 import signal
 import getopt
@@ -111,7 +107,6 @@
 from common import proxy65_manager
 from common import socks5
 from common import gajim
-from common import connection
 from common import helpers
 from common import optparser
 
@@ -151,7 +146,6 @@
 import dialogs
 import vcard
 import config
-import disco
 
 GTKGUI_GLADE = 'gtkgui.glade'
 
@@ -599,7 +593,7 @@ def handle_event_msgerror(self, account, array):
 							show = 'offline'
 						gc_c = gajim.contacts.create_gc_contact(room_jid = jid,
 							name = nick, show = show)
-						c = gajim.contacts.contact_from_gc_contct(c)
+						c = gajim.contacts.contact_from_gc_contact(gc_c)
 						self.roster.new_chat(c, account, private_chat = True)
 					ctrl = self.msg_win_mgr.get_control(fjid, account)
 					ctrl.print_conversation('Error %s: %s' % (array[1], array[2]),
@@ -1702,19 +1696,9 @@ def __init__(self):
 				self.systray_capabilities = True
 				self.systray = systraywin32.SystrayWin32()
 		else:
-			try:
-				import egg.trayicon # use gnomepythonextras trayicon
-			except:
-				try:
-					import trayicon # use the one we distribute
-				except: # user doesn't have trayicon capabilities
-					pass
-				else:
-					self.systray_capabilities = True
-					self.systray = systray.Systray()
-			else:
-				self.systray_capabilities = True
-				self.systray = systray.Systray()
+			self.systray_capabilities = systray.HAS_SYSTRAY_CAPABILITIES
+			if self.systray_capabilities:
+			    self.systray = systray.Systray()
 
 		if self.systray_capabilities and gajim.config.get('trayicon'):
 			self.show_systray()
diff --git a/src/gajim_themes_window.py b/src/gajim_themes_window.py
index 0fd9f0205e2f5554c910ab3a07d1f36397bba620..7b034e962b18894a5584f79aa6ec2e7bb49266f2 100644
--- a/src/gajim_themes_window.py
+++ b/src/gajim_themes_window.py
@@ -26,7 +26,6 @@
 
 import gtk
 import gtk.glade
-import gobject
 import pango
 import dialogs
 import gtkgui_helpers
diff --git a/src/groupchat_control.py b/src/groupchat_control.py
index 31412876cd5627ce4fb4c3d7cd667160692ee2e5..cd1c9375a402c33fb2319441ad42226c950dcf0b 100644
--- a/src/groupchat_control.py
+++ b/src/groupchat_control.py
@@ -33,18 +33,13 @@
 import config
 import vcard
 import cell_renderer_image
-import history_window
-import tooltips
 
 from common import gajim
 from common import helpers
 
-from common import gajim
 from chat_control import ChatControl
 from chat_control import ChatControlBase
 from conversation_textview import ConversationTextview
-from message_textview import MessageTextView
-from gettext import ngettext
 from common import i18n
 
 _ = i18n._
diff --git a/src/message_control.py b/src/message_control.py
index a0fe71653893acba1860e666cec2cd93e5ffc852..27890c3bacc6e7cccd13569fd9398e2d5804030b 100644
--- a/src/message_control.py
+++ b/src/message_control.py
@@ -13,10 +13,7 @@
 ##
 import gtk
 import gtk.glade
-import pango
 import gobject
-import common
-import gtkgui_helpers
 
 from common import gajim
 
@@ -112,9 +109,10 @@ def get_tab_label(self, chatstate):
 		(label_str, color) either of which can be None
 		if chatstate is given that means we have HE SENT US a chatstate and
 		we want it displayed'''
-		# NOTE: Derived classes SHOULD implement this
-		# Return a markup'd label and optional gtk.Color
-		return (label_str, None) #FIXME: label_str is not defined. pychecker your files
+		# NOTE: Derived classes MUST implement this
+		# Return a markup'd label and optional gtk.Color in a tupple like:
+		#return (label_str, None)
+		pass
 
 	def get_tab_image(self):
 		'''Return a suitable tab image for display.  None clears any current label.'''
diff --git a/src/message_window.py b/src/message_window.py
index 2e853a72fd1ebe3e0753fd551229b511aabbd290..06900da665cababf1a7747b86ea54290201650d4 100644
--- a/src/message_window.py
+++ b/src/message_window.py
@@ -23,7 +23,6 @@
 
 import gtk
 import gtk.glade
-import pango
 import gobject
 
 import common
diff --git a/src/notify.py b/src/notify.py
index fe992c430f95569b2e86d79cefb3cbe91c0f2c14..9ffc711058006e7773eee4c9cc5933f536c7653b 100644
--- a/src/notify.py
+++ b/src/notify.py
@@ -29,12 +29,10 @@
 ##
 
 import os
-import gajim
 import dialogs
 import gobject
 
 from common import gajim
-from common import exceptions
 from common import i18n
 i18n.init()
 _ = i18n._
diff --git a/src/remote_control.py b/src/remote_control.py
index 596d56f1672a6d0150f5f75514f333efdd3101ea..366f14c858c286f8f9bd66ec25dda6ac4fc83981 100644
--- a/src/remote_control.py
+++ b/src/remote_control.py
@@ -26,13 +26,8 @@
 ##
 
 import gobject
-import gtk
 import os
-import sys
 
-import systray
-
-from common import exceptions
 from common import gajim
 from common import helpers
 from time import time
@@ -108,7 +103,7 @@ def get_dbus_struct(obj):
 	if isinstance(obj, float):
 		return DBUS_DOUBLE(obj)
 	if isinstance(obj, bool):
-		return DBUS_BOLEAN(obj)
+		return DBUS_BOOLEAN(obj)
 	if isinstance(obj, (list, tuple)):
 		result = [DBUS_VARIANT(get_dbus_struct(i)) for i in obj]
 		if result == []:
diff --git a/src/systray.py b/src/systray.py
index c3f31e377e314adba2219a27ab4ff7c1f6408468..a5322172b7934fc3c17819e0c8ff57c503572398 100644
--- a/src/systray.py
+++ b/src/systray.py
@@ -31,6 +31,8 @@
 from common import helpers
 from common import i18n
 
+HAS_SYSTRAY_CAPABILITIES = True
+
 try:
 	import egg.trayicon as trayicon	# gnomepythonextras trayicon
 except:
@@ -38,7 +40,7 @@
 		import trayicon # our trayicon
 	except:
 		gajim.log.debug('No trayicon module available')
-		pass
+		HAS_SYSTRAY_CAPABILITIES = False
 
 _ = i18n._
 APP = i18n.APP
diff --git a/src/systraywin32.py b/src/systraywin32.py
index 9ee236853e05d7124457f93af21d3bdaed8b0e6b..8fc302fd1365218fccc33c8c9bad2bf722c7707a 100644
--- a/src/systraywin32.py
+++ b/src/systraywin32.py
@@ -98,18 +98,6 @@ def message_map(self, msg_map={}):
 						msg_map[key] = value
 			self._message_map.update(msg_map)
 
-	def message_unmap(self, msg, callback=None):
-		if self._message_map.has_key(msg):
-			if callback:
-				cblist = self._message_map[key]
-				if isinstance(cblist, list):
-					if not len(cblist) < 2:
-						for i in xrange(len(cblist)):
-							if cblist[i] == callback:
-								del self._message_map[key][i]
-								return
-			del self._message_map[key]
-
 	def remove_notify_icon(self):
 		""" Removes the notify icon. """
 		if self.notify_icon:
diff --git a/src/vcard.py b/src/vcard.py
index 16198709d4cc9439afbfc98e0c385e01221cddb9..af8ca47858f8b9814fdf4c4ac3754bf7bba1fc45 100644
--- a/src/vcard.py
+++ b/src/vcard.py
@@ -20,11 +20,11 @@
 import base64
 import mimetypes
 import os
-import sys
 import time
+import locale
+
 import gtkgui_helpers
 import dialogs
-import locale
 
 from common import helpers
 from common import gajim
@@ -502,8 +502,8 @@ def on_retrieve_button_clicked(self, widget):
 			self.xml.get_widget('PHOTO_image').set_from_pixbuf(None)
 			gajim.connections[self.account].request_vcard(self.jid)
 		else:
-			ErrorDialog(_('You are not connected to the server'),
-						_('Without a connection, you can not get your contact information.')).get_response()
+			dialogs.ErrorDialog(_('You are not connected to the server'),
+    		    	_('Without a connection, you can not get your contact information.')).get_response()
 
 	def change_to_vcard(self):
 		self.xml.get_widget('information_notebook').remove_page(0)