]]
 
 module("environment", package.seeall)
-require("sha1")
+local hash = require("hash")
 
 --- create new environment
 -- @return environment
 --- return a hash representing the environment
 -- @param env environment
 function id(env)
-    local sha1 = sha1.sha1_init()
+    local hc = hash.hash_start()
     for var, val in env:iter() do
-        sha1:update(string.format("%s=%s", var, val))
+        hc:hash_append(string.format("%s=%s", var, val))
     end
-    return sha1:final()
+    -- XXX: get rid string.upper one day, causes a build-id change
+    return string.upper(hc:hash_finish())
 end
 
 --- merge environment from merge into env.
     e1:set("var1.1", "val1.1")
     e1:set("var1.2", "val1.2")
     e1:set("var1.4", "val1.4")
+    print(e1:id())
     assert(e1:id() == "84C3CB1BFF877D12F500C05D7B133DA2B8BC0A4A")
 
     e2 = new()