diff --git a/webconsole/src/main/resources/OSGI-INF/l10n/bundle.properties b/webconsole/src/main/resources/OSGI-INF/l10n/bundle.properties
index ebd5908..273811f 100644
--- a/webconsole/src/main/resources/OSGI-INF/l10n/bundle.properties
+++ b/webconsole/src/main/resources/OSGI-INF/l10n/bundle.properties
@@ -23,9 +23,31 @@
 # to translate the natively encoded files to ISO-8859-1 during bundle build
 #
 
-#
-# There are no resources currently.
-#
-# In the future, this file will list the keys used in the Web Console bundle,
-# which may be translated by localization fragments.
-#
+
+# Common UI
+reload=Reload
+change=Change
+abort=Abort
+
+# VMStat plugin
+vmstat.stopped=Framework has been stopped.
+vmstat.restarting=Framework is restarting. stand by ...
+vmstat.reloading.in=Reloading in
+vmstat.running=System is up and running!
+vmstat.sl.title=Start Level Information:
+vmstat.sl.system=System Start Level
+vmstat.sl.bundle=Default Bundle Start Level
+vmstat.info.title=Server Information:
+vmstat.lastStarted=Last Started
+vmstat.framework=Framework
+vmstat.shutdown.in=Shutdown in 
+vmstat.java.title=Java Information:
+vmstat.java.runtime=Java Runtime
+vmstat.java.jvm=Java Virtual Machine
+vmstat.mem.total=Total Memory
+vmstat.mem.used=Used Memory
+vmstat.mem.free=Free Memory
+vmstat.gc.title=Garbage Collection
+vmstat.gc.button=Run
+
+
diff --git a/webconsole/src/main/resources/res/ui/vmstat.js b/webconsole/src/main/resources/res/ui/vmstat.js
new file mode 100644
index 0000000..684b68a
--- /dev/null
+++ b/webconsole/src/main/resources/res/ui/vmstat.js
@@ -0,0 +1,42 @@
+/* shuts down server after [num] seconds */
+function shutdown(num, formname, elemid) {
+	var elem = $('#' + elemid);
+	var secs=" second";
+	var ellipsis="...";
+	if (num > 0) {
+		if (num != 1) {
+			secs+="s";
+		}
+	    elem.html(num+secs+ellipsis);
+		setTimeout('shutdown('+(--num)+', "'+formname+'", "'+elemid+'")',1000);
+	} else {
+	    $('#' + formname).submit();
+	}
+}
+
+/* aborts server shutdown and redirects to [target] */
+function abort(target) {
+    top.location.href=target;
+}
+
+/* displays a date in the user's local timezone */
+function localTm(time) {
+	return (time ? new Date(time) : new Date()).toLocaleString();
+}
+/* fill in the data */
+$(document).ready(function() {
+	if(typeof statData == 'undefined') return;
+	for(i in statData) {
+		var target = $('#' + i);
+		if (target.val()) {
+			target.val(statData[i]);
+		} else {
+			target.text(statData[i]);
+		}
+	}
+	$('#lastStarted').text(localTm(statData.lastStarted));
+	var st = statData.shutdownTimer;
+	$('#shutdownform').css('display', st ? 'none' : 'block');
+	$('#shutdownform2').css('display', st ? 'block' : 'none');
+	$('#shutdown_type').val(statData.shutdownType);
+});
\ No newline at end of file
diff --git a/webconsole/src/main/resources/templates/vmstat.html b/webconsole/src/main/resources/templates/vmstat.html
new file mode 100644
index 0000000..bf1d09a
--- /dev/null
+++ b/webconsole/src/main/resources/templates/vmstat.html
@@ -0,0 +1,108 @@
+﻿<script type="text/javascript" src="res/ui/vmstat.js"></script>
+<script type="text/javascript">
+// <![CDATA[
+var statData = ${startData};
+// ]]>
+</script>
+
+<!-- status line -->
+<p class="statline">${vmstat.running}</p>
+
+<table class="nicetable">
+	<thead>
+		<tr>
+			<th colspan="2">${vmstat.sl.title}</th>
+		</tr>
+	</thead>
+
+	<tr>
+		<td>${vmstat.sl.system}</td>
+		<td>
+			<form method="post" action="${pluginRoot}">
+				<div>
+					<input type="hidden" name="action" value="setStartLevel"/>
+					<input type="text" size="3" name="systemStartLevel" id="systemStartLevel" value="-1"/>
+					&nbsp;&nbsp;<input type="submit" name="Set Start Level" value="${change}"/>
+				</div>
+			</form>
+		</td>
+	</tr>
+	<tr>
+		<td>${vmstat.sl.bundle}</td>
+		<td>
+			<form method="post" action="${pluginRoot}">
+				<div>
+					<input type="hidden" name="action" value="setStartLevel"/>
+					<input type="text" size="3" name="bundleStartLevel" id="bundleStartLevel" value="-1"/>
+					&nbsp;&nbsp;<input type="submit" name="Set Start Level" value="${change}"/>
+				</div>
+			</form>
+		</td>
+	</tr>
+
+	<tr><td colspan="2">&nbsp;</td></tr>
+	<tr>
+		<th colspan="2">${vmstat.info.title}</th>
+	</tr>
+	<tr>
+		<td>${vmstat.lastStarted}</td>
+		<td id="lastStarted">---</td>
+	</tr>
+	<tr>
+		<td>${vmstat.framework}</td>
+		<td>
+			<form id="shutdownform" method="post" action="${pluginRoot}">
+				<div>
+				<input type="hidden" name="shutdown_timer" value="shutdown_timer" />
+				<!-- NOTE: don't translate value="Restart" & value="Stop" - will break the operation type -->
+				<input class="ui-state-error" type="submit" name="shutdown_type" value="Restart" onclick="return confirm('This will stop and restart the framework and all bundles. Please confirm to continue.');" />
+				<input class="ui-state-error" type="submit" name="shutdown_type" value="Stop" onclick="return confirm('This will stop the framework and all bundles. Please confirm to continue.')" />
+				</div>
+			</form>
+			<form id="shutdownform2" method="post" action="${pluginRoot}">
+				<div>
+				<input type="hidden" name="shutdown_type" id="shutdown_type" value="" />
+				<input class="ui-state-error" type="button" value="${abort}" onclick="abort('${pluginRoot}')" />
+				${vmstat.shutdown.in} <span id='countdowncell'>&nbsp;</span>
+				<script type="text/javascript">if(statData.shutdownTimer) shutdown(3, 'shutdownform2', 'countdowncell');</script>
+				</div>
+			</form>
+		</td>
+	</tr>
+
+	<tr><td colspan="2">&nbsp;</td></tr>
+	<tr>
+		<th colspan="2">${vmstat.java.title}</th>
+	</tr>
+	<tr>
+		<td>${vmstat.java.runtime}</td>
+		<td id="runtime">-</td>
+	</tr>
+	<tr>
+		<td>${vmstat.java.jvm}</td>
+		<td id="jvm">-</td>
+	</tr>
+	<tr>
+		<td>${vmstat.mem.total}</td>
+		<td id="mem_total">-</td>
+	</tr>
+	<tr>
+		<td>${vmstat.mem.used}</td>
+		<td id="mem_used">-</td>
+	</tr>
+	<tr>
+		<td>${vmstat.mem.free}</td>
+		<td id="mem_free">-</td>
+	</tr>
+	<tr>
+		<td>${vmstat.gc.title}</td>
+		<td>
+			<form method="post" action="${pluginRoot}">
+				<div>
+					<input type="hidden" name="action" value="gc" />
+					<input class="submit" type="submit" name="Collect Garbage" value="${vmstat.gc.button}" />
+				</div>
+			</form>
+		</td>
+	</tr>
+</table>
diff --git a/webconsole/src/main/resources/templates/vmstat_restart.html b/webconsole/src/main/resources/templates/vmstat_restart.html
new file mode 100644
index 0000000..bb1f933
--- /dev/null
+++ b/webconsole/src/main/resources/templates/vmstat_restart.html
@@ -0,0 +1,13 @@
+﻿<script type="text/javascript" src="res/ui/vmstat.js"></script>
+
+<!-- status line -->
+<p class="statline">${vmstat.restarting}</p>
+
+<form id="reloadform" method="get" action="">
+	<div style="width:100%; text-align: center">
+		<input class="ui-state-error" type="submit" value="${reload}" />
+		${vmstat.reloading.in} <span id="reloadcountdowncell">&nbsp;</span>
+		<script type="text/javascript">shutdown(10, "reloadform", "reloadcountdowncell");</script>
+	</div>
+</form>
+
diff --git a/webconsole/src/main/resources/templates/vmstat_stop.html b/webconsole/src/main/resources/templates/vmstat_stop.html
new file mode 100644
index 0000000..ce054c2
--- /dev/null
+++ b/webconsole/src/main/resources/templates/vmstat_stop.html
@@ -0,0 +1,5 @@
+﻿<script type="text/javascript" src="res/ui/vmstat.js"></script>
+
+<!-- status line -->
+<p class="statline">${vmstat.stopped}</p>
+
