diff --git a/ethchain/vm.go b/ethchain/vm.go
index 29eb4aaf584dcccdc6e62c8da5095234d5d834fb..85136e4355a9a2036430176f79b3f3fb038c5873 100644
--- a/ethchain/vm.go
+++ b/ethchain/vm.go
@@ -448,7 +448,7 @@ func (vm *Vm) RunClosure(closure *Closure, hook DebugHook) (ret []byte, err erro
 				closure.Price)
 			// Call the closure and set the return value as
 			// main script.
-			c.Script, _, err = c.Call(vm, nil, hook)
+			c.Script, gas, err = c.Call(vm, nil, hook)
 
 			if err != nil {
 				stack.Push(ethutil.BigFalse)
diff --git a/ethutil/bytes.go b/ethutil/bytes.go
index b298675a290b3bf4476f41fb00afd56dbbefb66a..075e40b4c4cc5e264dd6455935d47335623da0c9 100644
--- a/ethutil/bytes.go
+++ b/ethutil/bytes.go
@@ -88,3 +88,13 @@ func IsHex(str string) bool {
 	l := len(str)
 	return l >= 4 && l%2 == 0 && str[0:2] == "0x"
 }
+
+func StringToByteFunc(str string, cb func(str string) []byte) (ret []byte) {
+	if str[0:2] == "0x" {
+		ret = FromHex(str[2:])
+	} else {
+		ret = cb(str)
+	}
+
+	return
+}