diff --git a/dev_console.go b/dev_console.go
index 2e6b385df21961d61555f1d8faff661375b20ca2..696493cdde057906696669d8aaa4edb64f1fcd6f 100644
--- a/dev_console.go
+++ b/dev_console.go
@@ -197,16 +197,16 @@ func (i *Console) ParseInput(input string) bool {
 			}
 		case "contract":
 			fmt.Println("Contract editor (Ctrl-D = done)")
-			code := i.Editor()
+			code := ethchain.Compile(i.Editor())
 
-			contract := ethchain.NewTransaction([]byte{}, ethutil.Big(tokens[1]), code)
+			contract := ethchain.NewTransaction(ethchain.ContractAddr, ethutil.Big(tokens[1]), code)
 			data, _ := ethutil.Config.Db.Get([]byte("KeyRing"))
 			keyRing := ethutil.NewValueFromBytes(data)
 			contract.Sign(keyRing.Get(0).Bytes())
 
 			i.ethereum.TxPool.QueueTransaction(contract)
 
-			fmt.Printf("%x\n", contract.Hash())
+			fmt.Printf("%x\n", contract.Hash()[12:])
 		case "exit", "quit", "q":
 			return false
 		case "help":
diff --git a/ethereum.go b/ethereum.go
index 384b2274832a6f6d3810fb01f6a954ac151e0482..0b941dce3f34a2a2431bd60779fc436dfb1143e6 100644
--- a/ethereum.go
+++ b/ethereum.go
@@ -5,6 +5,7 @@ import (
 	"github.com/ethereum/eth-go"
 	"github.com/ethereum/eth-go/ethchain"
 	"github.com/ethereum/eth-go/ethutil"
+	"github.com/ethereum/eth-go/ethwire"
 	"github.com/ethereum/go-ethereum/ui"
 	"github.com/niemeyer/qml"
 	"github.com/obscuren/secp256k1-go"
@@ -195,6 +196,7 @@ func main() {
 
 					// Search the nonce
 					block.Nonce = pow.Search(block)
+					ethereum.Broadcast(ethwire.MsgBlockTy, []interface{}{block.Value().Val})
 					err := ethereum.BlockManager.ProcessBlock(block)
 					if err != nil {
 						log.Println(err)
diff --git a/ui/library.go b/ui/library.go
index 0dfb10ac759e1e14f7e2c06cd72c5d60683389ae..c9273e8c5e3ab01212948e7ca228f44b7148cb6f 100644
--- a/ui/library.go
+++ b/ui/library.go
@@ -5,6 +5,7 @@ import (
 	"fmt"
 	"github.com/ethereum/eth-go/ethchain"
 	"github.com/ethereum/eth-go/ethutil"
+	"strings"
 )
 
 type EthLib struct {
@@ -13,22 +14,34 @@ type EthLib struct {
 	txPool       *ethchain.TxPool
 }
 
-func (lib *EthLib) CreateTx(receiver, a string) string {
-	hash, err := hex.DecodeString(receiver)
-	if err != nil {
-		return err.Error()
+func (lib *EthLib) CreateTx(receiver, a, data string) string {
+	var hash []byte
+	if len(receiver) == 0 {
+		hash = ethchain.ContractAddr
+	} else {
+		var err error
+		hash, err = hex.DecodeString(receiver)
+		if err != nil {
+			return err.Error()
+		}
 	}
-	data, _ := ethutil.Config.Db.Get([]byte("KeyRing"))
-	keyRing := ethutil.NewValueFromBytes(data)
+
+	k, _ := ethutil.Config.Db.Get([]byte("KeyRing"))
+	keyRing := ethutil.NewValueFromBytes(k)
 
 	amount := ethutil.Big(a)
-	tx := ethchain.NewTransaction(hash, amount, []string{""})
+	code := ethchain.Compile(strings.Split(data, "\n"))
+	tx := ethchain.NewTransaction(hash, amount, code)
 	tx.Nonce = lib.blockManager.GetAddrState(keyRing.Get(1).Bytes()).Nonce
 
 	tx.Sign(keyRing.Get(0).Bytes())
 
 	lib.txPool.QueueTransaction(tx)
 
+	if len(receiver) == 0 {
+		ethutil.Config.Log.Infof("Contract addr %x", tx.Hash()[12:])
+	}
+
 	return ethutil.Hex(tx.Hash())
 }
 
@@ -40,5 +53,6 @@ func (lib *EthLib) GetBlock(hexHash string) *Block {
 
 	block := lib.blockChain.GetBlock(hash)
 	fmt.Println(block)
+
 	return &Block{Number: int(block.BlockInfo().Number), Hash: ethutil.Hex(block.Hash())}
 }
diff --git a/wallet.qml b/wallet.qml
index 6ee6ff1103c674bb1c501a85fd222c0ba4f99762..e7145cef37269f12988ef9eb898520a72791ba02 100644
--- a/wallet.qml
+++ b/wallet.qml
@@ -23,7 +23,7 @@ ApplicationWindow {
 			Button {
 			      text: "Send"
 			      onClicked: {
-				      console.log(eth.createTx(txReceiver.text, txAmount.text))
+				      console.log(eth.createTx(txReceiver.text, txAmount.text, codeView.text))
 			      }
 			}
 
@@ -300,8 +300,9 @@ ApplicationWindow {
 	}
 
 	function addLog(str) {
-		console.log(str)
-		logModel.insert(0, {description: str})
+		if(str.len != 0) {
+			logModel.append({description: str})
+		}
 	}
 
 	function setPeers(text) {