diff --git a/CHANGES b/CHANGES
--- a/CHANGES
+++ b/CHANGES
@@ -1,3 +1,6 @@
+0.5.4 - 130304
+* fixed compilation with ghc-7.6 by Daniel Seidel and Sönke Hahn
+
 0.5.3 - 110413
 * updated for the latest parseargs
 * cleaned up warnings
diff --git a/hp2any-graph.cabal b/hp2any-graph.cabal
--- a/hp2any-graph.cabal
+++ b/hp2any-graph.cabal
@@ -1,6 +1,6 @@
 Name:          hp2any-graph
-Version:       0.5.3
-Cabal-Version: >= 1.2
+Version:       0.5.4
+Cabal-Version: >= 1.6
 Synopsis:      Real-time heap graphing utility and profile stream server with a reusable graphing module.
 Category:      profiling, development, utils
 Description:
@@ -13,7 +13,7 @@
 
 Author:        Patai Gergely
 Maintainer:    Patai Gergely (patai.gergely@gmail.com)
-Copyright:     (c) 2009-2011, Patai Gergely
+Copyright:     (c) 2009-2013, Patai Gergely
 Homepage:      http://www.haskell.org/haskellwiki/Hp2any
 License:       BSD3
 License-File:  LICENSE
@@ -47,3 +47,7 @@
   Build-Depends:  base >= 4 && < 5, process, directory, filepath, containers,
                   bytestring, hp2any-core, parseargs >= 0.1.3.1, network
   GHC-Options:    -Wall -O2
+
+source-repository head
+  type:     git
+  location: https://github.com/cobbpg/hp2any.git
diff --git a/src/Graph.hs b/src/Graph.hs
--- a/src/Graph.hs
+++ b/src/Graph.hs
@@ -106,6 +106,13 @@
     matrixMode $= Modelview 0
     postRedisplay Nothing
 
+  -- Since we are using the non-threaded rts, Haskell threads other than
+  -- the main thread will never run unless a callback is invoked. The timer
+  -- callback below eusures that this happens regularly.
+  let registerTimer = addTimerCallback timeoutMilliseconds registerTimer
+      timeoutMilliseconds = 50
+  registerTimer
+
   -- If the mouse is moved, we find out which cost centre it is
   -- hovering over, and refresh the display if there is a change.
   passiveMotionCallback $== \pos -> glProtect $ do
diff --git a/src/Relay.hs b/src/Relay.hs
--- a/src/Relay.hs
+++ b/src/Relay.hs
@@ -5,6 +5,8 @@
 --import Control.Concurrent.MVar
 import Control.Monad
 import Control.Monad.Fix
+import Control.Exception (SomeException, catch)
+import Prelude hiding (catch)
 import qualified Data.IntMap as IM
 import Data.IORef
 import Network
@@ -54,7 +56,7 @@
       -- Forward stream to the client.
       fix $ \sendLoop -> do
         prof <- readChan ownChan
-        ok <- flip catch (const (return False)) $ do
+        ok <- flip catch (const (return False) :: SomeException -> IO Bool) $ do
           sendMsg chdl . putStream $ prof
           return (prof /= SinkStop)
 
