diff --git a/JHashtable.hs b/JHashtable.hs
index 1986131e00d0967c4a485115a01c197ccd00931f..a97352e5906073c0a0d7ce3b90c6676f39355b5e 100644
--- a/JHashtable.hs
+++ b/JHashtable.hs
@@ -1,12 +1,13 @@
-import Data.HashTable.IO
+import qualified Data.Map as Map
+import Data.IORef
 
-newMap :: IO (BasicHashTable String a)
-newMap = new :: IO (BasicHashTable String a)
+type MutableMap a = IORef (Map.Map String a)
 
+newMap :: IO (MutableMap a)
+newMap = newIORef Map.empty
 
-insertMap :: BasicHashTable String a -> String -> a -> IO ()
-insertMap = insert
+insertMap :: MutableMap a -> String -> a -> IO ()
+insertMap ref key value = modifyIORef' ref (Map.insert key value)
 
--- Look up a value in the hash map by key
-lookupMap :: BasicHashTable String a -> String -> IO (Maybe a)
-lookupMap = Data.HashTable.IO.lookup
+lookupMap :: MutableMap a -> String -> IO (Maybe a)
+lookupMap ref key = Map.lookup key <$> readIORef ref
diff --git a/Julio.hs b/Julio.hs
index 58b46a069d60f125b1e5173d4c14dc610b6dca45..821ff6395ca745c129ea122c2d4851ced30aa6e7 100644
--- a/Julio.hs
+++ b/Julio.hs
@@ -3,6 +3,7 @@ import Grammar
 import System.Environment
 import Control.Exception
 import System.IO
+import JHashtable
 
 
 main :: IO ()