diff --git a/web/ons-demo/RELEASE_NOTES.txt b/web/ons-demo/RELEASE_NOTES.txt
index 09cda38..231ba46 100644
--- a/web/ons-demo/RELEASE_NOTES.txt
+++ b/web/ons-demo/RELEASE_NOTES.txt
@@ -3,7 +3,8 @@
 - onos nodes at top
 - count only active switches in header
 - hook up switchctrl all and local actions
-- various small ui improvements (hover feedback e.g.)
+- various small ui improvements (hover feedback, flow chooser animation e.g.)
+- splash screen and use vector graphics for on.lab logo
 
 
 ** April 8, 2013 **
diff --git a/web/ons-demo/css/skin.default.css b/web/ons-demo/css/skin.default.css
index f94ab69..f6086a3 100644
--- a/web/ons-demo/css/skin.default.css
+++ b/web/ons-demo/css/skin.default.css
@@ -201,7 +201,6 @@
 	border-left: 1px solid #AAA;
 }
 
-
 .controller {
 	padding: .25em;
 	padding-left: 2.5em;
@@ -216,7 +215,7 @@
 }
 
 .action, .controller {
-	font-size: 20px;
+	font-size: 18px;
 }
 
 
@@ -433,3 +432,8 @@
 	-webkit-animation-iteration-count: 70;
 }
 
+.core path {
+	stroke-width: 1px;
+	stroke: black;
+}
+
diff --git a/web/ons-demo/js/map.js b/web/ons-demo/js/map.js
index 35ca77d..62df872 100644
--- a/web/ons-demo/js/map.js
+++ b/web/ons-demo/js/map.js
@@ -1,6 +1,3 @@
-
-
-
 (function () {
 
 var projection = d3.geo.mercator()
@@ -8,6 +5,8 @@
     .scale(8000)
     .rotate([-180,0]);
 
+var switchXML;
+
 function createMap(svg, cb) {
 	topology = svg.append('svg:svg').attr('id', 'viewBox').attr('viewBox', '0 0 1000 1000').
 			attr('id', 'viewbox');
@@ -23,7 +22,10 @@
 		      		.append('path')
 		      		.attr('d', path)
 
-		cb();
+		d3.xml('assets/switch.svg', function (xml) {
+			switchXML = document.importNode(xml.documentElement, true);;
+			cb();
+		});
 	});
 }
 
@@ -220,12 +222,26 @@
 
 function switchEnter(d) {
 	var g = d3.select(this);
-	var width = widths[d.className];
+	var width;
 
-	g.append('svg:circle').attr('r', width)
-		.classed(d.className, true)
-		.attr('cx', d.x)
-		.attr('cy', d.y);
+	// attempt to draw an svg switch
+	if (false && d.className == 'core') {
+		width = 30;
+		g.select(function () {
+			return this.appendChild(switchXML.cloneNode(true));
+		})
+			.classed(d.className, true)
+			.attr('x', d.x - 30)
+			.attr('y', d.y - 30);
+
+	} else {
+		width = widths[d.className];
+		g.append('svg:circle').attr('r', width)
+			.classed(d.className, true)
+			.attr('cx', d.x)
+			.attr('cy', d.y);
+	}
+
 
 	if (d.label) {
 		g.append('svg:text')
diff --git a/web/ons-demo/js/topologyactions.js b/web/ons-demo/js/topologyactions.js
index 843f829..6501e5b 100644
--- a/web/ons-demo/js/topologyactions.js
+++ b/web/ons-demo/js/topologyactions.js
@@ -1,3 +1,12 @@
+function clearHighlight() {
+	topology.selectAll('circle').each(function (data) {
+		data.mouseDown = false;
+		d3.select('#topologyArea').classed('linking', false);
+		mouseOutSwitch(data);
+	});
+	d3.select('#linkVector').remove();
+};
+
 function mouseOverSwitch(data) {
 
 	d3.event.preventDefault();
@@ -87,6 +96,8 @@
 }
 
 function doubleClickSwitch(data) {
+	clearHighlight();
+
 	var circle = d3.select(document.getElementById(data.dpid)).select('circle');
 	if (data.state == 'ACTIVE') {
 		var prompt = 'Deactivate ' + data.dpid + '?';
@@ -103,16 +114,7 @@
 	}
 }
 
-d3.select(document.body).on('mouseup', function () {
-	function clearHighlight() {
-		topology.selectAll('circle').each(function (data) {
-			data.mouseDown = false;
-			d3.select('#topologyArea').classed('linking', false);
-			mouseOutSwitch(data);
-		});
-		d3.select('#linkVector').remove();
-	};
-
+d3.select(window).on('mouseup', function () {
 	d3.selectAll('.nodrop').classed('nodrop', false);
 
 	function removeLink(link) {
