diff --git a/manager/eris-mint/state/state_test.go b/manager/eris-mint/state/state_test.go
index 37eef90987f6c44fe10e12262dc873b593e63347..88a6f94d1edd6aeb61e9780847a94c382cfd5957 100644
--- a/manager/eris-mint/state/state_test.go
+++ b/manager/eris-mint/state/state_test.go
@@ -3,7 +3,6 @@ package state
 import (
 	"bytes"
 	"encoding/hex"
-	"fmt"
 	"testing"
 	//"time"
 
@@ -386,8 +385,7 @@ func TestNameTxs(t *testing.T) {
 	}
 }
 
-// Test creating a contract, creating a contract from a contract,
-// and creating a contract from a contract called by another contract
+// Test creating a contract from futher down the call stack
 /*
 contract Factory {
     address a;
@@ -406,6 +404,7 @@ contract PreFactory{
 }
 */
 
+// run-time byte code for each of the above
 var preFactoryCode, _ = hex.DecodeString("60606040526000357C0100000000000000000000000000000000000000000000000000000000900480639ED933181461003957610037565B005B61004F600480803590602001909190505061007B565B604051808273FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF16815260200191505060405180910390F35B60008173FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1663EFC81A8C604051817C01000000000000000000000000000000000000000000000000000000000281526004018090506020604051808303816000876161DA5A03F1156100025750505060405180519060200150600060006101000A81548173FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF02191690830217905550600060009054906101000A900473FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF16905061013C565B91905056")
 var factoryCode, _ = hex.DecodeString("60606040526000357C010000000000000000000000000000000000000000000000000000000090048063EFC81A8C146037576035565B005B60426004805050606E565B604051808273FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF16815260200191505060405180910390F35B6000604051610153806100E0833901809050604051809103906000F0600060006101000A81548173FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF02191690830217905550600060009054906101000A900473FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF16905060DD565B90566060604052610141806100126000396000F360606040526000357C0100000000000000000000000000000000000000000000000000000000900480639ED933181461003957610037565B005B61004F600480803590602001909190505061007B565B604051808273FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF16815260200191505060405180910390F35B60008173FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1663EFC81A8C604051817C01000000000000000000000000000000000000000000000000000000000281526004018090506020604051808303816000876161DA5A03F1156100025750505060405180519060200150600060006101000A81548173FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF02191690830217905550600060009054906101000A900473FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF16905061013C565B91905056")
 var createData, _ = hex.DecodeString("9ed93318")
@@ -452,8 +451,7 @@ func TestCreates(t *testing.T) {
 
 	acc1 = state.GetAccount(acc1.Address)
 	storage := state.LoadStorage(acc1.StorageRoot)
-	_, v, _ := storage.Get(common.LeftPadBytes([]byte{0}, 32))
-	fmt.Printf("%X\n", v)
+	_, firstCreatedAddress, _ := storage.Get(common.LeftPadBytes([]byte{0}, 32))
 
 	acc0 = state.GetAccount(acc0.Address)
 	// call the pre-factory, triggering the factory to run a create
@@ -477,9 +475,65 @@ func TestCreates(t *testing.T) {
 
 	acc1 = state.GetAccount(acc1.Address)
 	storage = state.LoadStorage(acc1.StorageRoot)
-	_, v, _ = storage.Get(common.LeftPadBytes([]byte{0}, 32))
-	fmt.Printf("%X\n", v)
+	_, secondCreatedAddress, _ := storage.Get(common.LeftPadBytes([]byte{0}, 32))
 
+	if bytes.Equal(firstCreatedAddress, secondCreatedAddress) {
+		t.Errorf("Multiple contracts created with the same address!")
+	}
+}
+
+/*
+contract Caller {
+    function send(address x){
+        x.send(msg.value);
+    }
+}
+*/
+var callerCode, _ = hex.DecodeString("60606040526000357c0100000000000000000000000000000000000000000000000000000000900480633e58c58c146037576035565b005b604b6004808035906020019091905050604d565b005b8073ffffffffffffffffffffffffffffffffffffffff16600034604051809050600060405180830381858888f19350505050505b5056")
+var sendData, _ = hex.DecodeString("3e58c58c")
+
+func TestContractSend(t *testing.T) {
+	//evm.SetDebug(true)
+	state, privAccounts, _ := RandGenesisState(3, true, 1000, 1, true, 1000)
+
+	//val0 := state.GetValidatorInfo(privValidators[0].Address)
+	acc0 := state.GetAccount(privAccounts[0].PubKey.Address())
+	acc0PubKey := privAccounts[0].PubKey
+	acc1 := state.GetAccount(privAccounts[1].PubKey.Address())
+	acc2 := state.GetAccount(privAccounts[2].PubKey.Address())
+
+	state = state.Copy()
+	newAcc1 := state.GetAccount(acc1.Address)
+	newAcc1.Code = callerCode
+	state.UpdateAccount(newAcc1)
+
+	sendData = append(sendData, common.LeftPadBytes(acc2.Address, 32)...)
+	sendAmt := int64(10)
+	acc2Balance := acc2.Balance
+
+	// call the contract, triggering the send
+	tx := &txs.CallTx{
+		Input: &txs.TxInput{
+			Address:  acc0.Address,
+			Amount:   sendAmt,
+			Sequence: acc0.Sequence + 1,
+			PubKey:   acc0PubKey,
+		},
+		Address:  acc1.Address,
+		GasLimit: 1000,
+		Data:     sendData,
+	}
+
+	tx.Input.Signature = privAccounts[0].Sign(state.ChainID, tx)
+	err := execTxWithState(state, tx, true)
+	if err != nil {
+		t.Errorf("Got error in executing call transaction, %v", err)
+	}
+
+	acc2 = state.GetAccount(acc2.Address)
+	if acc2.Balance != sendAmt+acc2Balance {
+		t.Errorf("Value transfer from contract failed! Got %d, expected %d", acc2.Balance, sendAmt+acc2Balance)
+	}
 }
 
 // TODO: test overflows.