diff --git a/ethereal/assets/debugger/debugger.qml b/ethereal/assets/debugger/debugger.qml
index bf69b4254ddd2f5d40656e714f7c45c9f29129c7..9ea131d7d62aa371f0295ee426a9382a8d4d2b92 100644
--- a/ethereal/assets/debugger/debugger.qml
+++ b/ethereal/assets/debugger/debugger.qml
@@ -8,7 +8,7 @@ import Ethereum 1.0
 
 ApplicationWindow {
     visible: false
-    title: "Debugger"
+    title: "IceCream"
     minimumWidth: 1280
     minimumHeight: 900
     width: 1290
@@ -58,9 +58,10 @@ ApplicationWindow {
                         anchors.bottom: parent.bottom
 
                         Label {
-                            text: "Data"
+                            text: "Arbitrary data"
                         }
                         TextArea {
+                            id: rawDataField
                             anchors.left: parent.left
                             anchors.right: parent.right
                             height: 150
@@ -105,7 +106,7 @@ ApplicationWindow {
 
                     SplitView {
                         orientation: Qt.Horizontal
-                        height: 300
+                        height: 250
 
                         TableView {
                             id: stackTableView
@@ -149,16 +150,15 @@ ApplicationWindow {
             }
         }
     }
-    statusBar: StatusBar {
+    toolBar: ToolBar {
         RowLayout {
             spacing: 5
-            anchors.fill: parent
 
             Button {
                 property var enabled: true
                 id: debugStart
                 onClicked: {
-                    dbg.debug(txValue.text, txGas.text, txGasPrice.text, codeEditor.text)
+                    dbg.debug(txValue.text, txGas.text, txGasPrice.text, codeEditor.text, rawDataField.text)
                 }
                 text: "Debug"
             }
diff --git a/ethereal/assets/heart.png b/ethereal/assets/heart.png
new file mode 100644
index 0000000000000000000000000000000000000000..3c874ab7f36da5f25e7295ee5572738941dfe2e8
Binary files /dev/null and b/ethereal/assets/heart.png differ
diff --git a/ethereal/assets/qml/wallet.qml b/ethereal/assets/qml/wallet.qml
index 3063bb10d2090509264f5701dd88f322323766b6..5e0904a20be8bc5eb955c1b15506118e8b119b6e 100644
--- a/ethereal/assets/qml/wallet.qml
+++ b/ethereal/assets/qml/wallet.qml
@@ -123,7 +123,7 @@ ApplicationWindow {
 				}
 
 				Image {
-					source: ui.assetPath("net.png")
+					source: ui.assetPath("heart.png")
 					anchors.horizontalCenter: parent.horizontalCenter
 					MouseArea {
 						anchors.fill: parent
@@ -284,27 +284,14 @@ ApplicationWindow {
 		title: "Open QML Application"
 		onAccepted: {
 			//ui.open(openAppDialog.fileUrl.toString())
-      //ui.openHtml(Qt.resolvedUrl(ui.assetPath("test.html")))
-      ui.openHtml(openAppDialog.fileUrl.toString())
-
+			//ui.openHtml(Qt.resolvedUrl(ui.assetPath("test.html")))
+			ui.openHtml(openAppDialog.fileUrl.toString())
 		}
 	}
 
 	statusBar: StatusBar {
 		RowLayout {
 			anchors.fill: parent
-			/*
-			Button {
-				property var enabled: true
-				id: connectButton
-				onClicked: {
-					if(this.enabled) {
-						ui.connect(this)
-					}
-				}
-				text: "Connect"
-			}
-			*/
 
 			Button {
 				property var enabled: true
@@ -369,8 +356,8 @@ ApplicationWindow {
 					Text { text: '<b>Hash:</b> ' + hash; color: "#F2F2F2"}
 					Text { text: '<b>Block found at:</b> ' + prettyTime; color: "#F2F2F2"}
 				}
+			}
 		}
-	}
 		ListView {
 			model: singleBlock
 			delegate: blockDetailsDelegate
diff --git a/ethereal/ui/debugger.go b/ethereal/ui/debugger.go
index 817c0b08f6adb99b73a7e699ee5f6aad4704bf63..8b27c2fe53cc92275cb89ddd9a03ceb6b0cb3281 100644
--- a/ethereal/ui/debugger.go
+++ b/ethereal/ui/debugger.go
@@ -5,6 +5,8 @@ import (
 	"github.com/ethereum/eth-go/ethchain"
 	"github.com/ethereum/eth-go/ethutil"
 	"github.com/go-qml/qml"
+	"math/big"
+	"strings"
 )
 
 type DebuggerWindow struct {
@@ -39,11 +41,35 @@ func (self *DebuggerWindow) Show() {
 	}()
 }
 
-func (self *DebuggerWindow) Debug(valueStr, gasStr, gasPriceStr, data string) {
+func formatData(data string) []byte {
+	if len(data) == 0 {
+		return nil
+	}
+	// Simple stupid
+	d := new(big.Int)
+	if data[0:1] == "\"" && data[len(data)-1:] == "\"" {
+		d.SetBytes([]byte(data[1 : len(data)-1]))
+	} else if data[:2] == "0x" {
+		d.SetBytes(ethutil.FromHex(data[2:]))
+	} else {
+		d.SetString(data, 0)
+	}
+
+	return ethutil.BigToBytes(d, 256)
+}
+
+func (self *DebuggerWindow) Debug(valueStr, gasStr, gasPriceStr, scriptStr, dataStr string) {
 	if !self.Db.done {
 		self.Db.Q <- true
 	}
 
+	dataSlice := strings.Split(dataStr, "\n")
+	var data []byte
+	for _, dataItem := range dataSlice {
+		d := formatData(dataItem)
+		data = append(data, d...)
+	}
+
 	state := self.lib.eth.BlockChain().CurrentBlock.State()
 
 	defer func() {
@@ -52,7 +78,7 @@ func (self *DebuggerWindow) Debug(valueStr, gasStr, gasPriceStr, data string) {
 		}
 	}()
 
-	script, err := ethutil.Compile(data)
+	script, err := ethutil.Compile(scriptStr)
 	if err != nil {
 		ethutil.Config.Log.Debugln(err)
 
@@ -72,7 +98,7 @@ func (self *DebuggerWindow) Debug(valueStr, gasStr, gasPriceStr, data string) {
 
 	account := self.lib.eth.StateManager().TransState().GetAccount(keyPair.Address())
 	contract := ethchain.MakeContract(callerTx, state)
-	callerClosure := ethchain.NewClosure(account, contract, contract.Init(), state, ethutil.Big(gasStr), ethutil.Big(gasPriceStr))
+	callerClosure := ethchain.NewClosure(account, contract, script, state, ethutil.Big(gasStr), ethutil.Big(gasPriceStr))
 
 	block := self.lib.eth.BlockChain().CurrentBlock
 	vm := ethchain.NewVm(state, self.lib.eth.StateManager(), ethchain.RuntimeVars{
@@ -86,7 +112,7 @@ func (self *DebuggerWindow) Debug(valueStr, gasStr, gasPriceStr, data string) {
 
 	self.Db.done = false
 	go func() {
-		callerClosure.Call(vm, contract.Init(), self.Db.halting)
+		callerClosure.Call(vm, data, self.Db.halting)
 
 		state.Reset()