diff --git a/cmd/ethereum/js.go b/cmd/ethereum/js.go
index d5cf62146410be140b50ad5e8fc6c325f59c45ac..e3165d3f5c600a14ebc90107ba6c199d5a0717ea 100644
--- a/cmd/ethereum/js.go
+++ b/cmd/ethereum/js.go
@@ -46,7 +46,7 @@ func execJsFile(ethereum *eth.Ethereum, filename string) {
 	if err != nil {
 		utils.Fatalf("%v", err)
 	}
-	re := javascript.NewJSRE(xeth.New(ethereum))
+	re := javascript.NewJSRE(xeth.New(ethereum, nil))
 	if _, err := re.Run(string(content)); err != nil {
 		utils.Fatalf("Javascript Error: %v", err)
 	}
@@ -61,7 +61,7 @@ type repl struct {
 }
 
 func runREPL(ethereum *eth.Ethereum) {
-	xeth := xeth.New(ethereum)
+	xeth := xeth.New(ethereum, nil)
 	repl := &repl{
 		re:       javascript.NewJSRE(xeth),
 		xeth:     xeth,
diff --git a/cmd/mist/ext_app.go b/cmd/mist/ext_app.go
deleted file mode 100644
index 84041a553823117a49d0742db590b6b25327f8b3..0000000000000000000000000000000000000000
--- a/cmd/mist/ext_app.go
+++ /dev/null
@@ -1,117 +0,0 @@
-/*
-	This file is part of go-ethereum
-
-	go-ethereum is free software: you can redistribute it and/or modify
-	it under the terms of the GNU General Public License as published by
-	the Free Software Foundation, either version 3 of the License, or
-	(at your option) any later version.
-
-	go-ethereum is distributed in the hope that it will be useful,
-	but WITHOUT ANY WARRANTY; without even the implied warranty of
-	MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-	GNU General Public License for more details.
-
-	You should have received a copy of the GNU General Public License
-	along with go-ethereum.  If not, see <http://www.gnu.org/licenses/>.
-*/
-/**
- * @authors
- * 	Jeffrey Wilcke <i@jev.io>
- */
-package main
-
-import (
-	"github.com/ethereum/go-ethereum/core"
-	"github.com/ethereum/go-ethereum/core/types"
-	"github.com/ethereum/go-ethereum/event"
-	"github.com/ethereum/go-ethereum/xeth"
-	"github.com/obscuren/qml"
-)
-
-type AppContainer interface {
-	Create() error
-	Destroy()
-
-	Window() *qml.Window
-	Engine() *qml.Engine
-
-	NewBlock(*types.Block)
-	NewWatcher(chan bool)
-	Post(string, int)
-}
-
-type ExtApplication struct {
-	*xeth.XEth
-	eth core.Backend
-
-	events          event.Subscription
-	watcherQuitChan chan bool
-
-	filters map[string]*core.Filter
-
-	container AppContainer
-	lib       *UiLib
-}
-
-func NewExtApplication(container AppContainer, lib *UiLib) *ExtApplication {
-	return &ExtApplication{
-		XEth:            xeth.New(lib.eth),
-		eth:             lib.eth,
-		watcherQuitChan: make(chan bool),
-		filters:         make(map[string]*core.Filter),
-		container:       container,
-		lib:             lib,
-	}
-}
-
-func (app *ExtApplication) run() {
-	// Set the "eth" api on to the containers context
-	context := app.container.Engine().Context()
-	context.SetVar("eth", app)
-	context.SetVar("ui", app.lib)
-
-	err := app.container.Create()
-	if err != nil {
-		guilogger.Errorln(err)
-		return
-	}
-
-	// Call the main loop
-	go app.mainLoop()
-
-	app.container.NewWatcher(app.watcherQuitChan)
-
-	win := app.container.Window()
-	win.Show()
-	win.Wait()
-
-	app.stop()
-}
-
-func (app *ExtApplication) stop() {
-	app.events.Unsubscribe()
-
-	// Kill the main loop
-	app.watcherQuitChan <- true
-
-	app.container.Destroy()
-}
-
-func (app *ExtApplication) mainLoop() {
-	for ev := range app.events.Chan() {
-		switch ev := ev.(type) {
-		case core.NewBlockEvent:
-			app.container.NewBlock(ev.Block)
-
-			/* TODO remove
-			case state.Messages:
-				for id, filter := range app.filters {
-					msgs := filter.FilterMessages(ev)
-					if len(msgs) > 0 {
-						app.container.Messages(msgs, id)
-					}
-				}
-			*/
-		}
-	}
-}
diff --git a/cmd/mist/gui.go b/cmd/mist/gui.go
index 869b689dd60400918bb5e8cb93ed51c0129200ca..53ca35574e54552f1b18f399c2eb367c38c49133 100644
--- a/cmd/mist/gui.go
+++ b/cmd/mist/gui.go
@@ -88,7 +88,7 @@ func NewWindow(ethereum *eth.Ethereum, config *ethutil.ConfigManager, session st
 		panic(err)
 	}
 
-	xeth := xeth.New(ethereum)
+	xeth := xeth.New(ethereum, nil)
 	gui := &Gui{eth: ethereum,
 		txDb:          db,
 		xeth:          xeth,
diff --git a/cmd/mist/ui_lib.go b/cmd/mist/ui_lib.go
index 098e8fca5c9be5b57df18f51894f61d3cb379984..187d5b2d60c175b2be845e27b32710b5539baa3a 100644
--- a/cmd/mist/ui_lib.go
+++ b/cmd/mist/ui_lib.go
@@ -58,7 +58,7 @@ type UiLib struct {
 }
 
 func NewUiLib(engine *qml.Engine, eth *eth.Ethereum, assetPath string) *UiLib {
-	x := xeth.New(eth)
+	x := xeth.New(eth, nil)
 	lib := &UiLib{XEth: x, engine: engine, eth: eth, assetPath: assetPath, jsEngine: javascript.NewJSRE(x), filterCallbacks: make(map[int][]int)} //, filters: make(map[int]*xeth.JSFilter)}
 	lib.filterManager = filter.NewFilterManager(eth.EventMux())
 	go lib.filterManager.Start()
@@ -91,24 +91,6 @@ func (self *UiLib) EvalJavascriptString(str string) string {
 	return fmt.Sprintf("%v", value)
 }
 
-func (ui *UiLib) OpenQml(path string) {
-	container := NewQmlApplication(path[7:], ui)
-	app := NewExtApplication(container, ui)
-
-	go app.run()
-}
-
-func (ui *UiLib) OpenHtml(path string) {
-	container := NewHtmlApplication(path, ui)
-	app := NewExtApplication(container, ui)
-
-	go app.run()
-}
-
-func (ui *UiLib) OpenBrowser() {
-	ui.OpenHtml("file://" + ui.AssetPath("ext/home.html"))
-}
-
 func (ui *UiLib) Muted(content string) {
 	component, err := ui.engine.LoadFile(ui.AssetPath("qml/muted.qml"))
 	if err != nil {
diff --git a/cmd/utils/cmd.go b/cmd/utils/cmd.go
index 99e60ff9e780e3bf147b105f88e513d986b79e91..a77c6ad4db8234347175017ae34a32af4596de42 100644
--- a/cmd/utils/cmd.go
+++ b/cmd/utils/cmd.go
@@ -167,7 +167,7 @@ func KeyTasks(keyManager *crypto.KeyManager, KeyRing string, GenAddr bool, Secre
 
 func StartRpc(ethereum *eth.Ethereum, RpcListenAddress string, RpcPort int) {
 	var err error
-	ethereum.RpcServer, err = rpchttp.NewRpcHttpServer(xeth.New(ethereum), RpcListenAddress, RpcPort)
+	ethereum.RpcServer, err = rpchttp.NewRpcHttpServer(xeth.New(ethereum, nil), RpcListenAddress, RpcPort)
 	if err != nil {
 		clilogger.Errorf("Could not start RPC interface (port %v): %v", RpcPort, err)
 	} else {
diff --git a/rpc/api.go b/rpc/api.go
index ae1e1504fcac45d501c5cad227bd8a909ec3ab0c..70a8cf9b4bdf99a1e0139e51f0f1d89b4bffa7bb 100644
--- a/rpc/api.go
+++ b/rpc/api.go
@@ -9,7 +9,6 @@ For each request type, define the following:
 package rpc
 
 import (
-	"fmt"
 	"math/big"
 	"strings"
 	"sync"
@@ -23,7 +22,6 @@ import (
 	"github.com/ethereum/go-ethereum/event"
 	"github.com/ethereum/go-ethereum/event/filter"
 	"github.com/ethereum/go-ethereum/state"
-	"github.com/ethereum/go-ethereum/ui"
 	"github.com/ethereum/go-ethereum/xeth"
 )
 
@@ -721,14 +719,3 @@ func (self *EthereumApi) useState(statedb *state.StateDB) {
 
 	self.eth = self.eth.UseState(statedb)
 }
-
-func t(f ui.Frontend) {
-	// Call the password dialog
-	ret, err := f.Call("PasswordDialog")
-	if err != nil {
-		fmt.Println(err)
-	}
-	// Get the first argument
-	t, _ := ret.Get(0)
-	fmt.Println("return:", t)
-}