diff --git a/Data/Git.hs b/Data/Git.hs
--- a/Data/Git.hs
+++ b/Data/Git.hs
@@ -34,6 +34,7 @@
     , resolvePath
 
     -- * repo context
+    , Git
     , withCurrentRepo
     , withRepo
     , findRepo
diff --git a/Data/Git/Diff.hs b/Data/Git/Diff.hs
--- a/Data/Git/Diff.hs
+++ b/Data/Git/Diff.hs
@@ -183,7 +183,7 @@
 -- | This is a proposed diff records for a given file.
 -- It contains useful information:
 --   * the filename (with its path in the root project)
---   * a file diff (with the Data.Algorythm.Patience method)
+--   * a file diff (with the Data.Algorithm.Patience method)
 --   * the file's mode (i.e. the file priviledge)
 --   * the file's ref
 data HitDiff = HitDiff
diff --git a/Data/Git/Storage.hs b/Data/Git/Storage.hs
--- a/Data/Git/Storage.hs
+++ b/Data/Git/Storage.hs
@@ -149,7 +149,7 @@
 isRepo path = do
     dir     <- isDirectory path
     subDirs <- mapM (isDirectory . (path </>))
-                    [ "branches", "hooks", "info"
+                    [ "hooks", "info"
                     , "logs", "objects", "refs"
                     , "refs"</> "heads", "refs"</> "tags"]
     return $ and ([dir] ++ subDirs)
diff --git a/Data/Git/Storage/Object.hs b/Data/Git/Storage/Object.hs
--- a/Data/Git/Storage/Object.hs
+++ b/Data/Git/Storage/Object.hs
@@ -57,7 +57,6 @@
 import Data.List (intersperse)
 import Data.Monoid
 import Data.Word
-import Data.Hourglass
 import Text.Printf
 
 #if MIN_VERSION_bytestring(0,10,0)
@@ -343,4 +342,4 @@
 -- used for objectWrite for commit and tag
 writeName label (Person name email locTime) =
         B.concat [label, " ", name, " <", email, "> ", BC.pack timeStr]
-  where timeStr = timePrint ("EPOCH TZHM" :: String) locTime
+  where timeStr = show locTime
diff --git a/Data/Git/Types.hs b/Data/Git/Types.hs
--- a/Data/Git/Types.hs
+++ b/Data/Git/Types.hs
@@ -24,8 +24,9 @@
     , getPermission
     , getFiletype
     -- * time type
-    , GitTime
+    , GitTime(..)
     , gitTime
+    , gitTimeToLocal
     -- * Pack delta types
     , DeltaOfs(..)
     , DeltaRef(..)
@@ -41,10 +42,12 @@
 
 import Data.Git.Ref
 import Data.Git.Delta
-import Data.Hourglass (Elapsed, LocalTime(..), TimezoneOffset(..))
+import Data.Hourglass (Elapsed, TimezoneOffset(..)
+                      , timePrint, timeConvert
+                      , Time(..), Timeable(..)
+                      , LocalTime, localTimeSetTimezone, localTimeFromGlobal)
 import Data.Data
 
-
 -- | type of a git object.
 data ObjectType =
       TypeTree
@@ -55,12 +58,32 @@
     | TypeDeltaRef
     deriving (Show,Eq,Data,Typeable)
 
--- | Git time is number of seconds since unix epoch with a timezone
-type GitTime = LocalTime Elapsed
+-- | Git time is number of seconds since unix epoch in the UTC zone with
+-- the current timezone associated
+data GitTime = GitTime
+    { gitTimeUTC      :: Elapsed
+    , gitTimeTimezone :: TimezoneOffset
+    } deriving (Eq)
 
+instance Timeable GitTime where
+    timeGetNanoSeconds _ = 0
+    timeGetElapsedP (GitTime t _) = timeConvert t
+    timeGetElapsed  (GitTime t _) = t
+instance Time GitTime where
+    timeFromElapsedP e = GitTime (timeGetElapsed e) (TimezoneOffset 0)
+    timeFromElapsed e = GitTime e (TimezoneOffset 0)
+
+instance Show GitTime where
+    show (GitTime t tz) =
+        timePrint "EPOCH" t ++ " " ++ show tz
+
 gitTime :: Integer -> Int -> GitTime
 gitTime seconds tzMins =
-    LocalTime (fromIntegral seconds) (TimezoneOffset tzMins)
+    GitTime (fromIntegral seconds) (TimezoneOffset tzMins)
+
+gitTimeToLocal :: GitTime -> LocalTime Elapsed
+gitTimeToLocal (GitTime t tz) =
+    localTimeSetTimezone tz (localTimeFromGlobal t)
 
 -- | the enum instance is useful when marshalling to pack file.
 instance Enum ObjectType where
diff --git a/Tests/Tests.hs b/Tests/Tests.hs
--- a/Tests/Tests.hs
+++ b/Tests/Tests.hs
@@ -47,8 +47,8 @@
     arbitrary = TimezoneOffset <$> choose (-11*60, 12*60)
 instance Arbitrary Elapsed where
     arbitrary = Elapsed . Seconds <$> choose (0,2^32-1)
-instance Arbitrary t => Arbitrary (LocalTime t) where
-    arbitrary = LocalTime <$> arbitrary <*> arbitrary
+instance Arbitrary GitTime where
+    arbitrary = GitTime <$> arbitrary <*> arbitrary
 instance Arbitrary ModePerm where
     arbitrary = ModePerm <$> elements [ 0o644, 0o664, 0o755, 0 ]
 
diff --git a/hit.cabal b/hit.cabal
--- a/hit.cabal
+++ b/hit.cabal
@@ -1,5 +1,5 @@
 Name:                hit
-Version:             0.6.0
+Version:             0.6.1
 Synopsis:            Git operations in haskell
 Description:
     .
@@ -46,7 +46,7 @@
                    , random
                    , zlib
                    , zlib-bindings >= 0.1 && < 0.2
-                   , hourglass
+                   , hourglass >= 0.2
                    , unix
                    , patience
   Exposed-modules:   Data.Git
@@ -75,7 +75,7 @@
   hs-source-dirs:    Hit
   ghc-options:       -Wall -fno-warn-orphans -fno-warn-missing-signatures
   if flag(debug)
-    ghc-options:     -rtsops -auto-all -caf-all
+    ghc-options:     -rtsopts -auto-all -caf-all
   if flag(executable)
     Build-depends:   base >= 4 && < 5
                    , mtl
