diff --git a/invest-applet/invest/preferences.py b/invest-applet/invest/preferences.py
index 65d83dc..92d92de 100644
--- a/invest-applet/invest/preferences.py
+++ b/invest-applet/invest/preferences.py
@@ -3,6 +3,7 @@ from os.path import join
 import gtk, gobject, gconf
 import invest
 from gettext import gettext as _
+from quotes import NameRetriever
 
 import cPickle
 
@@ -31,10 +32,16 @@ class PrefsDialog:
 			try:
 				if col == 0:    # stock symbols must be uppercase
 					new_text = str.upper(new_text)
+					nr = NameRetriever(new_text)
+					nr.connect('completed', update_label, store[path])
+					nr.start()
 				store[path][col] = typ(new_text)
 			except:
 				pass
 
+		def update_label(nr, store_path):
+			store_path[1] = nr.name
+
 		def get_cell_data(column, cell, model, iter, data):
 			typ, col = data
 			if typ == int:
diff --git a/invest-applet/invest/quotes.py b/invest-applet/invest/quotes.py
index 3f1a096..9c48502 100644
--- a/invest-applet/invest/quotes.py
+++ b/invest-applet/invest/quotes.py
@@ -61,6 +61,42 @@ class QuotesRetriever(Thread, _IdleObject):
 			self.retrieved = True
 		self.emit("completed")
 
+class NameRetriever(Thread, _IdleObject):
+	"""
+	Thread which uses gobject signals to return the name
+	of a stock symbol.
+	"""
+	__gsignals__ =  {
+			"completed": (
+				gobject.SIGNAL_RUN_LAST, gobject.TYPE_NONE, []),
+			# FIXME: We don't monitor progress, yet ...
+			#"progress": (
+			#	gobject.SIGNAL_RUN_LAST, gobject.TYPE_NONE, [
+			#	gobject.TYPE_FLOAT])        #percent complete
+			}
+
+	def __init__(self, ticker):
+		Thread.__init__(self)
+		_IdleObject.__init__(self)
+		self.ticker = ticker
+		self.retrieved = False
+		self.name = []
+
+	def run(self):
+		invest.debug('Retriving name for ticker: %s' % self.ticker)
+		quotes_url = "http://finance.yahoo.com/d/quotes.csv?s=%s&f=sn&e=.csv" % (self.ticker)
+		try:
+			data_file = urlopen(quotes_url, proxies = invest.PROXY)
+			data = data_file.readlines()
+			invest.debug('Retrieved data: %s' % data)
+			self.name = data[0].split(',')[1].strip('"\r\n')
+			invest.debug('Retrieved name: %s' % self.name)
+			data_file.close()
+		except Exception, msg:
+			invest.debug("Error while retrieving quotes data (url = %s): %s" % (quotes_url, msg))
+		else:
+			self.retrieved = True
+		self.emit("completed")
 
 class QuoteUpdater(gtk.ListStore):
 	updated = False
