diff --git a/hamster/applet.py b/hamster/applet.py
index d55e827..7789e36 100755
--- a/hamster/applet.py
+++ b/hamster/applet.py
@@ -40,7 +40,7 @@ from hamster.configuration import GconfStore
 
 from hamster import stuff
 from hamster.KeyBinder import *
-from hamster.hamsterdbus import HAMSTER_URI, HamsterDbusController 
+from hamster.hamsterdbus import HAMSTER_URI, HamsterDbusController, to_dbus_fact
 
 # controllers for other windows
 from hamster.edit_activity import CustomFactController
@@ -547,7 +547,7 @@ Now, start tracking!
         
         
         # Hamster DBusController current activity updating
-        self.dbusController.update_activity(label)
+        self.dbusController.ActivityUpdated(label)
 
     def check_user(self):
         if not self.notify_interval: #no interval means "never"
@@ -695,14 +695,9 @@ Now, start tracking!
         
         self.treeview.set_cursor(cur)
 
-
     def __update_fact(self):
         """dbus controller current fact updating"""
-        if self.last_activity and self.last_activity['end_time'] is None:
-            self.dbusController.update_fact(self.last_activity["name"])
-        else:
-            self.dbusController.update_fact(_(u'No activity'))
-
+        self.dbusController.FactUpdated(*to_dbus_fact(self.last_activity))
 
     def __show_toggle(self, event, is_active):
         """main window display and positioning"""
@@ -887,7 +882,6 @@ Now, start tracking!
     def after_fact_update(self, event, date):
         self.load_day()
         self.update_label()
-    
         self.__update_fact()
 
     """global shortcuts"""
diff --git a/hamster/hamsterdbus.py b/hamster/hamsterdbus.py
index d89c6f3..6650722 100644
--- a/hamster/hamsterdbus.py
+++ b/hamster/hamsterdbus.py
@@ -19,29 +19,51 @@
 
 import dbus
 import dbus.service
+import datetime
+from calendar import timegm
+
+from hamster import storage
 
 HAMSTER_URI = "org.gnome.hamster"
 HAMSTER_PATH = "/org/gnome/hamster"
 
+def to_dbus_fact(fact):
+    # Default return values
+    strings = ['', '', ''] # name, category, description
+    times = [0, 0] # start_time, end_time 
+
+    try:
+        fact_keys = fact.keys()
+    except:
+        #TODO: Maybe raise custom exceptions here
+        return strings[0], strings[1], strings[2], times[0], times[1]
+
+    # Workaround for check values
+    for index_key in enumerate(('name', 'category', 'description')):
+        if index_key[1] in fact_keys and fact[index_key[1]]: 
+            strings[index_key[0]] = fact[index_key[1]]
+    
+    for index_key in enumerate(('start_time', 'end_time')):
+        if index_key[1] in fact_keys and fact[index_key[1]]:
+            times[index_key[0]] = timegm(fact[index_key[1]].timetuple())
+
+    return strings[0], strings[1], strings[2], times[0], times[1]
+
 class HamsterDbusController(dbus.service.Object):
-    activity = "Undefined"
-    fact = "Undefined"
+    activity = 'Undefined'
+    current_fact = ('Undefined', 'Undefined', 'Undefined', 0, 0)
 
     def __init__(self, bus_name):
         dbus.service.Object.__init__(self, bus_name, HAMSTER_PATH)
 
-    @dbus.service.method(HAMSTER_URI)
-    def get_activity(self):
-        return self.activity
+    @dbus.service.method(HAMSTER_URI, in_signature='', out_signature='sssii')
+    def GetCurrentFact(self):
+        return self.current_fact
 
-    @dbus.service.signal(HAMSTER_URI)
-    def update_activity(self, activity):
+    @dbus.service.signal(HAMSTER_URI, signature='s')
+    def ActivityUpdated(self, activity):
         self.activity = activity
 
-    @dbus.service.method(HAMSTER_URI)
-    def get_fact(self):
-        return self.fact
-
-    @dbus.service.signal(HAMSTER_URI)
-    def update_fact(self, fact):
-        self.fact = fact
+    @dbus.service.signal(HAMSTER_URI, signature='sssii')
+    def FactUpdated(self, name, category, description, start_time, end_time):
+        self.current_fact = (name, category, description, start_time, end_time)
