diff --git a/bot.py b/bot.py
index 8c6669d61d1b3f4a0fefbe8d9a17251b9927ba6d..2bbe1070637900fddba0d0e38d8c67313537795e 100644
--- a/bot.py
+++ b/bot.py
@@ -10,6 +10,7 @@ import feedparser
 from colour import Colours
 from db import FeedDB
 from config import Config
+import lxml.html
 
 class IRCBot(irc.client.SimpleIRCClient):
     def __init__(self, config, db, on_connect_cb):
@@ -28,8 +29,6 @@ class IRCBot(irc.client.SimpleIRCClient):
             connection.join(self.__config.CHANNEL)
 
     def on_join(self, connection, event):
-        """Say hello to other people in the channel. """
-        connection.privmsg(self.__config.CHANNEL, "Hi, I'm " + Colours('3',str(connection.get_nickname())).get() + " your bot. Send " + Colours(self.num_col,"!help").get() +" to get a list of commands.")
         self.__on_connect_cb()
 
     def __handle_msg(self, msg):
@@ -116,10 +115,10 @@ class IRCBot(irc.client.SimpleIRCClient):
         except Exception as e:
             print e
 
-    def post_news(self, feed_name, title, url, date):
+    def post_news(self, feed_name, title, url, date, desc):
         """Posts a new announcement to the channel"""
         try:
-            msg = Colours(self.feedname,str(feed_name)).get() + ": " + title + ", " + url + ", " + Colours(self.date,str(date)).get()
+            msg = Colours('2',title).get() + " " + desc + " " + Colours('6',url).get()
             self.send_msg(self.__config.CHANNEL, msg)
         except Exception as e:
             print e
@@ -171,10 +170,10 @@ class Bot(object):
                 # Reverse the ordering. Oldest first.
                 for newsitem in news.entries[::-1]:
                     newstitle = newsitem.title
-                    newsurl = tinyurl.create_one(newsitem.link) # Create a short link
-                    if newsurl == "Error": #If that fails, use the long version
-                        newsurl = newsitem.link
-                    newsurl = Colours('', newsurl).get()
+                    newsurl = newsitem.link
+                    
+                    html = lxml.html.fromstring(newsitem.description)
+                    newsdesc = html.find_class('activity-task-title')[0].text_content()
 
                     # Try to get the published date. Otherwise set it to 'no date'
                     try:
@@ -188,9 +187,8 @@ class Bot(object):
                     # Update the database. If it's a new issue, post it to the channel
                     is_new = self.__db.insert_news(feed_info[0], newstitle, newsurl, newsdate)
                     if is_new:
-                        self.__irc.post_news(feed_info[1], newstitle, newsurl, newsdate)
+                        self.__irc.post_news(feed_info[1], newstitle, newsurl, newsdate, newsdesc)
 
-                print Colours('7',"Updated: ").get() + feed_info[1]
             except Exception as e:
                 print e
                 print Colours('1',"Failed: ").get() + feed_info[1]
diff --git a/colour.py b/colour.py
index b4505df481bdbf9f84aeb0d9c3581bb8ef3f3e93..3b1037e3465a215337d8c5d3b06fb4a7d4ad6d39 100644
--- a/colour.py
+++ b/colour.py
@@ -3,32 +3,32 @@ class Colours:
 	def __init__(self, col, string):
 		self.colour = col
 		self.string = string
-		self.default = '\033[0m'
+		self.default = '\017'
 		self.ret = self.string+self.default
 
 	def get(self):
 		if self.colour == '1' or self.colour == 'red':
-			return '\033[031m'+self.ret
+			return '\00304'+self.ret
 		elif self.colour == '2' or self.colour == 'green':
-			return '\033[032m'+self.ret
+			return '\00303'+self.ret
 		elif self.colour == '3' or self.colour == 'yellow':
-			return '\033[033m'+self.ret
+			return '\00308'+self.ret
 		elif self.colour == '4' or self.colour == 'blue':
-			return '\033[034m'+self.ret
+			return '\00312'+self.ret
 		elif self.colour == '5' or self.colour == 'purple':
-			return '\033[035m'+self.ret
+			return '\00306'+self.ret
 		elif self.colour == '6' or self.colour == 'cyan':
-			return '\033[036m'+self.ret
+			return '\00310'+self.ret
 		elif self.colour == '7' or self.colour == 'lightgreen':
-			return '\033[1;32m'+self.ret
+			return '\00309'+self.ret
 		elif self.colour == '8' or self.colour == 'grey':
-			return '\033[1;30m'+self.ret
+			return '\00314'+self.ret
 		elif self.colour == '9' or self.colour == 'pink':
-			return '\033[1;35m'+self.ret
+			return '\00313'+self.ret
 		elif self.colour == '10' or self.colour == 'lightblue':
-			return '\033[1;34m'+self.ret
+			return '\00311'+self.ret
 		else:
-			return '\033[1;37m'+self.ret
+			return '\00316'+self.ret
 
 """
 if __name__ == "__main__":
diff --git a/db.py b/db.py
index 70b3f971e764188fbcb25b47986bcfba286f403e..353e5e37bbaaed06fcc9cc1cc5e59f4bb3e267b0 100644
--- a/db.py
+++ b/db.py
@@ -59,7 +59,7 @@ class FeedDB(object):
 
     def insert_news(self, feed_id, title, url, published):
         """Checks if a news item with the given information exists. If not, create a new entry."""
-        exists = self.__db_worker.execute("select exists(select 1 FROM news WHERE feedid = :feedid and title = :title LIMIT 1)", {'feedid': feed_id, 'title': title})[0][0]
+        exists = self.__db_worker.execute("select exists(select 1 FROM news WHERE feedid = :feedid and title = :title and published = :published LIMIT 1)", {'feedid': feed_id, 'title': title, 'published': published})[0][0]
         if exists:
             return False
         self.__db_worker.execute("INSERT INTO news (title, url, feedid, published) VALUES (:title, :url, :feedid, :published)", {'title': title, 'url': url, 'feedid': feed_id, 'published': published})
diff --git a/main.py b/main.py
index 04b59083e21466f94e2922bd91c058eaa865d2f9..d973270685f6e98e3723cd31e0b08923f8d6b530 100644
--- a/main.py
+++ b/main.py
@@ -1,7 +1,16 @@
 #!/usr/bin/env python
 # -*- coding: utf-8 -*-
 from bot import Bot
+import signal
+import os
+
+def signal_handler(signal, frame):
+    print('You pressed Ctrl+C!')
+    os._exit(0)
 
 if __name__ == "__main__":
     bot = Bot()
-    bot.start()
\ No newline at end of file
+    bot.start()
+    signal.signal(signal.SIGINT, signal_handler)
+    while True:
+        signal.pause()