diff --git a/Changes b/Changes
--- a/Changes
+++ b/Changes
@@ -1,3 +1,9 @@
+[Changes for 0.51 - 2013-11-08]
+
+* Port to hashtables package for compatibility with GHC 7.8.
+* Switch internal integer hash algorithm to Cuckoo hashing.
+  Reported by: Henk-Jan van Tuyl
+
 [Changes for 0.50 - 2011-03-19]
 
 * parseYaml and emitYaml now work with Unicode Strings.
diff --git a/Data/Yaml/Syck.hsc b/Data/Yaml/Syck.hsc
--- a/Data/Yaml/Syck.hsc
+++ b/Data/Yaml/Syck.hsc
@@ -22,7 +22,7 @@
 import Foreign.Storable
 import System.IO.Unsafe
 import GHC.Ptr (Ptr(..))
-import qualified Data.HashTable as Hash
+import qualified Data.HashTable.IO as Hash
 import qualified Data.ByteString.Char8 as Buf
 import Data.ByteString.UTF8 (fromString, toString)
 import Data.ByteString.Char8 (useAsCStringLen, useAsCString)
@@ -123,7 +123,7 @@
         #{poke SyckEmitter, style} emitter scalarFold
         #{poke SyckEmitter, anchor_format} emitter (Ptr "%d"## :: CString)
 
-        marks <- Hash.new (==) (Hash.hashInt)
+        marks <- Hash.new
 
         let freeze = freezeNode marks
         syck_emitter_handler emitter =<< mkEmitterCallback (emitterCallback freeze)
@@ -234,7 +234,7 @@
 parseYamlCStr cstr = do
     bracket syck_new_parser syck_free_parser $ \parser -> do
         err     <- newIORef Nothing
-        badancs <- Hash.new (==) Hash.hashInt
+        badancs <- Hash.new
         syck_parser_str_auto parser cstr nullFunPtr
         syck_parser_handler parser =<< mkNodeCallback (nodeCallback badancs)
         syck_parser_error_handler parser =<< mkErrorCallback (errorCallback err)
@@ -248,7 +248,8 @@
             Nothing     -> return nilNode
             Just e      -> fail e
 
-type BadAnchorTable = Hash.HashTable Int YamlNode
+type HashTable k v = Hash.CuckooHashTable k v
+type BadAnchorTable = HashTable Int YamlNode
 
 
 nodeCallback :: BadAnchorTable -> SyckParser -> SyckNode -> IO SYMID
@@ -274,11 +275,13 @@
     -- Do something here about circular refs.
     case nodeId :: SYMID of
         0   -> return False
-        _   -> alloca $ \origPtr -> do
-            syck_lookup_sym parser nodeId origPtr
-            ptr <- peek origPtr
-            -- print ("bad anchor handled", nodeId, ptr)
-            Hash.update badancs (ptr `minusPtr` nullPtr) node
+        _   -> do
+            alloca $ \origPtr -> do
+                syck_lookup_sym parser nodeId origPtr
+                ptr <- peek origPtr
+                -- print ("bad anchor handled", nodeId, ptr)
+                Hash.insert badancs (ptr `minusPtr` nullPtr) node
+            return True
 
     symId   <- fmap fromIntegral (syck_add_sym parser nodePtr)
     return symId
@@ -303,7 +306,7 @@
         , ", column ", show (cursor - lineptr)
         ]
 
-freezeNode :: Hash.HashTable Int (Ptr a) -> YamlNode -> IO (Ptr a)
+freezeNode :: HashTable Int (Ptr a) -> YamlNode -> IO (Ptr a)
 freezeNode nodes MkNode{ n_anchor = AReference n } = do
     rv <- Hash.lookup nodes n
     case rv of
diff --git a/HsSyck.cabal b/HsSyck.cabal
--- a/HsSyck.cabal
+++ b/HsSyck.cabal
@@ -1,5 +1,5 @@
 Name:                HsSyck
-Version:             0.50
+Version:             0.51
 Cabal-version:       >= 1.2.3
 Category:            Text, Pugs
 Synopsis:            Fast, lightweight YAML loader and dumper
@@ -16,10 +16,10 @@
 License-File:        LICENSE
 Author:              Audrey Tang
 Maintainer:          audreyt@audreyt.org
-Copyright:           Audrey Tang, Gaal Yahas, 2005, 2006, 2007, 2008, 2009
+Copyright:           Audrey Tang, Gaal Yahas, 2005, 2006, 2007, 2008, 2009, 2013
 
 Build-Type:          Simple
-Tested-With:         GHC==6.8.2, GHC==6.8.3, GHC==6.10.1, GHC==6.10.2
+Tested-With:         GHC==6.8.2, GHC==6.8.3, GHC==6.10.1, GHC==6.10.2, GHC==7.6.3
 Data-Files:          Changes
 Extra-Source-Files:  syck/syck.h syck/syck_st.h syck/gram.h syck/yamlbyte.h
 
@@ -29,9 +29,9 @@
 
 Library
     if flag(SybInBase)
-        Build-Depends: base>=3 && <4, bytestring>=0.9.0.1, utf8-string>=0.3
+        Build-Depends: base>=3 && <4, bytestring>=0.9.0.1, utf8-string>=0.3, hashtables
     else
-        Build-Depends: base>=4 && <6, bytestring>=0.9.0.1, syb, utf8-string>=0.3
+        Build-Depends: base>=4 && <6, bytestring>=0.9.0.1, syb, utf8-string>=0.3, hashtables
 
     exposed-modules: Data.Yaml.Syck
 
