diff --git a/ethchain/state_manager.go b/ethchain/state_manager.go
index d52e418ce1ea275682208ee4bd9748334c816dde..129b30ba6f6b763b138dac091a9a586c94b11643 100644
--- a/ethchain/state_manager.go
+++ b/ethchain/state_manager.go
@@ -196,7 +196,7 @@ func (sm *StateManager) Process(block *Block, dontReact bool) (err error) {
 		fmt.Printf("## %x %x ##\n", block.Hash(), block.Number)
 	}
 
-	receipts, err := sm.ApplyDiff(state, parent, block)
+	_, err = sm.ApplyDiff(state, parent, block)
 	if err != nil {
 		return err
 	}
diff --git a/ethchain/transaction.go b/ethchain/transaction.go
index 0b4f8d1a4235f5a93353d99851a1825d8e1e2c4a..5686a7edb831987fe214e29107f725390ffa4fff 100644
--- a/ethchain/transaction.go
+++ b/ethchain/transaction.go
@@ -232,10 +232,6 @@ func (self *Receipt) Cmp(other *Receipt) bool {
 		return false
 	}
 
-	if self.CumulativeGasUsed.Cmp(other.CumulativeGasUsed) != 0 {
-		return false
-	}
-
 	return true
 }
 
diff --git a/ethchain/vm.go b/ethchain/vm.go
index f1794ff7727ebe23cb30d471b5d03eab79aa015b..788bde886016187044908e38aa19b611bd22b7af 100644
--- a/ethchain/vm.go
+++ b/ethchain/vm.go
@@ -184,7 +184,8 @@ func (vm *Vm) RunClosure(closure *Closure) (ret []byte, err error) {
 			var mult *big.Int
 			y, x := stack.Peekn()
 			val := closure.GetStorage(x)
-			if val.IsEmpty() && len(y.Bytes()) > 0 {
+			//if val.IsEmpty() && len(y.Bytes()) > 0 {
+			if val.BigInt().Cmp(ethutil.Big0) == 0 && len(y.Bytes()) > 0 {
 				mult = ethutil.Big2
 			} else if !val.IsEmpty() && len(y.Bytes()) == 0 {
 				mult = ethutil.Big0
@@ -482,7 +483,7 @@ func (vm *Vm) RunClosure(closure *Closure) (ret []byte, err error) {
 		case ORIGIN:
 			stack.Push(ethutil.BigD(vm.vars.Origin))
 
-			vm.Printf(" => %v", vm.vars.Origin)
+			vm.Printf(" => %x", vm.vars.Origin)
 		case CALLER:
 			caller := closure.caller.Address()
 			stack.Push(ethutil.BigD(caller))
@@ -550,10 +551,10 @@ func (vm *Vm) RunClosure(closure *Closure) (ret []byte, err error) {
 			}
 
 			code := closure.Script[cOff : cOff+l]
-			fmt.Println("len:", l, "code off:", cOff, "mem off:", mOff)
+			//fmt.Println("len:", l, "code off:", cOff, "mem off:", mOff)
 
 			mem.Set(mOff, l, code)
-			fmt.Println(Code(mem.Get(mOff, l)))
+			//fmt.Println(Code(mem.Get(mOff, l)))
 		case GASPRICE:
 			stack.Push(closure.Price)
 
@@ -743,6 +744,7 @@ func (vm *Vm) RunClosure(closure *Closure) (ret []byte, err error) {
 
 			if closure.object.Amount.Cmp(value) < 0 {
 				vmlogger.Debugf("Insufficient funds to transfer value. Req %v, has %v", value, closure.object.Amount)
+
 				closure.ReturnGas(gas, nil, nil)
 
 				stack.Push(ethutil.BigFalse)
diff --git a/ethutil/value.go b/ethutil/value.go
index b37b33c28dbd47d04b34fc2e3aa0c1984c775334..ecb9d15110e51fb1e94bd79edfe63dfaa2055dae 100644
--- a/ethutil/value.go
+++ b/ethutil/value.go
@@ -190,6 +190,19 @@ func (val *Value) Get(idx int) *Value {
 	return NewValue(nil)
 }
 
+func (self *Value) Copy() *Value {
+	switch val := self.Val.(type) {
+	case *big.Int:
+		return NewValue(new(big.Int).Set(val))
+	case []byte:
+		return NewValue(CopyBytes(val))
+	default:
+		return NewValue(self.Val)
+	}
+
+	return nil
+}
+
 func (val *Value) Cmp(o *Value) bool {
 	return reflect.DeepEqual(val.Val, o.Val)
 }