diff --git a/DBus.cabal b/DBus.cabal
--- a/DBus.cabal
+++ b/DBus.cabal
@@ -1,21 +1,34 @@
-name:           DBus
-version:        0.4
-license:        BSD3
-license-file:   LICENSE
-copyright:      Copyright (C) 2006 Evan Martin <martine@danga.com>
-                2008 David Himmelstrup <lemmih@gmail.com>
-author:         Evan Martin <martine@danga.com>, David Himmelstrup <lemmih@gmail.com>
-maintainer:     David Himmelstrup
-homepage:       http://seize.it/mirror/hdbus
-synopsis:       DBus bindings
-description:    Bindings for the D-Bus API.
-  For details on D-Bus, see the D-Bus wiki at:
-  <http://www.freedesktop.org/wiki/Software/dbus>
-build-depends:  base, bytestring
-build-type:     Configure
-extensions:     ForeignFunctionInterface, OverlappingInstances,
-                ExistentialQuantification
-exposed-modules: DBus, DBus.Message, DBus.Connection
-other-modules:   DBus.Internal, DBus.Shared
+name:               DBus
+version:            0.5.0
+cabal-version:      >= 1.6
+build-type:         Configure
+license:            BSD3
+license-file:       LICENSE
+author:             Evan Martin, David Himmelstrup
+maintainer:         Alexander Kojevnikov <alexander@kojevnikov.com>
+stability:          experimental
+homepage:           https://github.com/alexkay/hdbus
+bug-reports:        https://github.com/alexkay/hdbus/issues
+synopsis:           D-Bus bindings
+description:        Bindings for the D-Bus API.
+                    For details on D-Bus, see the D-Bus wiki at:
+                    <http://www.freedesktop.org/wiki/Software/dbus>
+category:           Network, Desktop
 extra-source-files: configure configure.ac DBus.buildinfo.in
-extra-tmp-files: autom4te.cache config.log config.status DBus.buildinfo
+extra-tmp-files:    autom4te.cache config.log config.status DBus.buildinfo
+
+library
+    build-depends:      base >= 4.0 && < 5.0, bytestring
+    exposed-modules:    DBus, DBus.Message, DBus.Connection
+    other-modules:      DBus.Internal, DBus.Shared
+    extensions:         ForeignFunctionInterface, OverlappingInstances,
+                        ExistentialQuantification
+
+source-repository head
+    type:               git
+    location:           git://github.com/alexkay/hdbus.git
+
+source-repository this
+    type:               git
+    location:           git://github.com/alexkay/hdbus.git
+    tag:                0.5.0
diff --git a/DBus.hsc b/DBus.hsc
--- a/DBus.hsc
+++ b/DBus.hsc
@@ -13,24 +13,26 @@
   --
   -- Other D-Bus functions can fail with other sorts of errors, which are
   -- raised as dynamic exceptions.  Errors can be caught with
-  -- 'Control.Exception.catchDyn', like this:
+  -- 'Control.Exception.catch', like this:
   --
   -- > do conn <- DBus.busGet DBus.System
   -- >    doSomethingWith conn
-  -- > `catchDyn` (\(DBus.Error name msg) -> putStrLn ("D-Bus error! " ++ msg))
+  -- > `catch` (\(DBus.Error name msg) -> putStrLn ("D-Bus error! " ++ msg))
   --
   Error(..),
 ) where
 
 import DBus.Shared
-import Data.Typeable (Typeable(..), mkTyConApp, mkTyCon)
+import Data.Typeable (Typeable(..), mkTyConApp, mkTyCon3)
+import Control.Exception
 
 -- |'Error's carry a name (like \"org.freedesktop.dbus.Foo\") and a
 -- message (like \"connection failed\").
 data Error = Error String String
 instance Typeable Error where
-  typeOf _ = mkTyConApp (mkTyCon "DBus.Error") []
+  typeOf _ = mkTyConApp (mkTyCon3 "DBus.Error" "" "") []
 instance Show Error where
   show (Error name message) = "D-Bus Error (" ++ name ++ "): " ++ message
+instance Exception Error
 
 -- vim: set ts=2 sw=2 tw=72 et ft=haskell :
diff --git a/DBus/Connection.hsc b/DBus/Connection.hsc
--- a/DBus/Connection.hsc
+++ b/DBus/Connection.hsc
@@ -24,7 +24,7 @@
 import Control.Monad (when)
 import Foreign
 import Foreign.C.String
-import Foreign.C.Types (CInt)
+import Foreign.C.Types (CInt(..))
 
 import DBus.Internal
 import DBus.Message
diff --git a/DBus/Internal.hsc b/DBus/Internal.hsc
--- a/DBus/Internal.hsc
+++ b/DBus/Internal.hsc
@@ -9,7 +9,7 @@
 
 module DBus.Internal where
 
-import Control.Exception (throwDyn)
+import Control.Exception (throw)
 import Control.Monad (when)
 import DBus (Error(..))
 import Foreign
@@ -57,6 +57,6 @@
       else do name <- #{peek DBusError, name} err >>= peekCString
               msg  <- #{peek DBusError, message} err >>= peekCString
               error_free err
-              throwDyn $ Error name msg
+              throw $ Error name msg
 
 -- vim: set ts=2 sw=2 tw=72 et ft=haskell :
diff --git a/DBus/Message.hsc b/DBus/Message.hsc
--- a/DBus/Message.hsc
+++ b/DBus/Message.hsc
@@ -1,5 +1,4 @@
-{-# LANGUAGE PatternSignatures, TypeSynonymInstances, FlexibleInstances #-}
-{-# OPTIONS -fglasgow-exts #-}
+{-# LANGUAGE ScopedTypeVariables, DeriveDataTypeable, TypeSynonymInstances, FlexibleInstances #-}
 -- HDBus -- Haskell bindings for D-Bus.
 -- Copyright (C) 2006 Evan Martin <martine@danga.com>
 
@@ -40,7 +39,7 @@
 import Data.Dynamic
 import Foreign
 import Foreign.C.String
-import Foreign.C.Types (CInt)
+import Foreign.C.Types (CInt(..))
 import System.IO.Unsafe
 
 import DBus.Internal
@@ -510,7 +509,7 @@
 
 -- |Retrieve the arguments from a message.
 args :: Message -> [Arg]
-args msg = unsafePerformIO $
+args msg = System.IO.Unsafe.unsafePerformIO $
   withForeignPtr msg $ \msg -> do
     withIter $ \iter -> do
       has_args <- message_iter_init msg iter
diff --git a/DBus/Shared.hsc b/DBus/Shared.hsc
--- a/DBus/Shared.hsc
+++ b/DBus/Shared.hsc
@@ -14,7 +14,7 @@
   serviceDBus,
   pathDBus, pathLocal,
   interfaceDBus, interfaceIntrospectable, interfaceLocal,
-  
+
 ) where
 
 import Foreign
diff --git a/LICENSE b/LICENSE
--- a/LICENSE
+++ b/LICENSE
@@ -1,4 +1,5 @@
-Copyright (c) 2006 Evan Martin <martine@danga.com>
+Copyright © 2006 Evan Martin <martine@danga.com>
+Copyright © 2008 David Himmelstrup <lemmih@gmail.com>
 All rights reserved.
 Redistribution and use in source and binary forms, with or without
 modification, are permitted provided that the following conditions are met:
diff --git a/Setup.hs b/Setup.hs
--- a/Setup.hs
+++ b/Setup.hs
@@ -1,2 +1,2 @@
 import Distribution.Simple
-main = defaultMain
+main = defaultMainWithHooks autoconfUserHooks
diff --git a/configure.ac b/configure.ac
--- a/configure.ac
+++ b/configure.ac
@@ -1,4 +1,4 @@
-AC_INIT([HDBus], [0.1], [martine@danga.com], [HDBus])
+AC_INIT([HDBus], [0.5.0])
 AC_CONFIG_SRCDIR([DBus.cabal])
 PKG_CHECK_MODULES(DBUS, [dbus-1])
 AC_CONFIG_FILES([DBus.buildinfo])
