diff --git a/vifib/Makefile b/vifib/Makefile
index d3eb480e90e586102c7074f641a7b33f029fe71a..a25612d0e661c79a4b00b02013029b8faaecb8db 100644
--- a/vifib/Makefile
+++ b/vifib/Makefile
@@ -9,6 +9,7 @@ JSLINT = jslint
 JSLINTOPTIONS = --maxerr=5
 
 DEVDIR = ${NAME}_dev
+APPDIR = $(DEVDIR)/app
 RELDIR = ${NAME}
 
 JSDIR = js
@@ -17,54 +18,51 @@ DEVCSS = slapos.css
 FINALJS = slapos.js
 FINALCSS = slapos.css
 
-MANIFESTNAME = $(DEVDIR)/slapos.manifest
+MANIFESTNAME = $(APPDIR)/slapos.manifest
 
-all: dev
+all: test
 
 #########################################
 # Dev environment
 #########################################
 
 # Emulate server responses with sinonjs
-fake: dev ${DEVDIR}/js/fake.js
-	more ${DEVDIR}/js/fake.js >> ${DEVDIR}/$(DEVJS)
+fake: dev $(DEVDIR)/js/fake.js
+	more $(DEVDIR)/js/fake.js >> $(APPDIR)/$(DEVJS)
 	echo "http://www.system-linux.eu/public/images/kvm-logo.png" >> $(MANIFESTNAME)
+	echo "http://www.linux-kvm.org/wiki/skins/kvm/kvmbanner-logo2.png" >> $(MANIFESTNAME)
 	echo "http://www.w3.org/html/logo/downloads/HTML5_Badge_512.png" >> $(MANIFESTNAME)
 	echo "http://7.mshcdn.com/wp-content/uploads/2011/01/html5-logo-1.jpg" >> $(MANIFESTNAME)
 
-${DEVDIR}/js/fake.js: js/utils/fake.js
+$(DEVDIR)/js/fake.js: js/utils/fake.js
 	@mkdir -p $(@D)
 	cp $< $@
 
 # Sort files for concatenation
-CATJSFILES = ${DEVDIR}/lib/jquery.js ${DEVDIR}/lib/sinon.js ${DEVDIR}/lib/mustache.js ${DEVDIR}/lib/spin.js ${DEVDIR}/lib/modernizr.js ${DEVDIR}/lib/swipe.js ${DEVDIR}/js/jquery.slapos.js ${DEVDIR}/js/init.js ${DEVDIR}/lib/jquery-mobile.js ${DEVDIR}/lib/url.js ${DEVDIR}/lib/route.js ${DEVDIR}/js/main.js ${DEVDIR}/js/render.js ${DEVDIR}/js/panels.js ${DEVDIR}/js/pages.js ${DEVDIR}/js/pages.mobile.js ${DEVDIR}/js/pages.tablet.js ${DEVDIR}/js/pages.desktop.js
+CATJSFILES = $(DEVDIR)/lib/jquery.js $(DEVDIR)/lib/sinon.js $(DEVDIR)/lib/mustache.js $(DEVDIR)/lib/spin.js $(DEVDIR)/lib/modernizr.js $(DEVDIR)/lib/swipe.js $(DEVDIR)/js/jquery.slapos.js $(DEVDIR)/js/init.js $(DEVDIR)/lib/jquery.mobile.js $(DEVDIR)/lib/url.js $(DEVDIR)/lib/route.js $(DEVDIR)/js/main.js $(DEVDIR)/js/render.js $(DEVDIR)/js/panels.js $(DEVDIR)/js/pages.js $(DEVDIR)/js/pages.mobile.js $(DEVDIR)/js/pages.tablet.js $(DEVDIR)/js/pages.desktop.js
 
-CATCSSFILES = ${DEVDIR}/lib/qunit.css
+CATCSSFILES = $(DEVDIR)/lib/qunit.css $(DEVDIR)/lib/jquery.mobile.css
 
-# List all javascript files except tests files
+# List all javascript files except tests files and lib files
 JSFILES = $(find $(JSDIR) -name 'tests' -prune -o -name 'lib' -prune -o -name "*.js" -print)
 
-dev: ${DEVDIR}/lib/sinon.js ${DEVDIR}/lib/jquery.js ${DEVDIR}/lib/qunit.js ${DEVDIR}/lib/qunit.css ${DEVDIR}/lib/jquery-mobile.js ${DEVDIR}/lib/modernizr.js ${DEVDIR}/lib/mustache.js ${DEVDIR}/lib/spin.js ${DEVDIR}/lib/swipe.js ${DEVDIR}/lib/route.js ${DEVDIR}/lib/url.js $(patsubst %.js, ${DEVDIR}/js/%.js, $(JSFILES)) ${DEVDIR}/index.html ${DEVDIR}/$(DEVJS) ${DEVDIR}/$(DEVCSS) manifest
+dev: $(DEVDIR)/lib/sinon.js $(DEVDIR)/lib/jquery.js $(DEVDIR)/lib/qunit.js $(DEVDIR)/lib/qunit.css $(DEVDIR)/lib/jquery.mobile.js $(DEVDIR)/lib/jquery.mobile.css $(DEVDIR)/lib/jquery.mobile.zip $(DEVDIR)/lib/modernizr.js $(DEVDIR)/lib/mustache.js $(DEVDIR)/lib/spin.js $(DEVDIR)/lib/swipe.js $(DEVDIR)/lib/route.js $(DEVDIR)/lib/url.js $(patsubst %.js, $(DEVDIR)/js/%.js, $(JSFILES)) $(APPDIR)/index.html $(APPDIR)/$(DEVJS) $(APPDIR)/$(DEVCSS) manifest
 
-manifest: $(DEVDIR)/index.html $(DEVDIR)/$(DEVJS) $(DEVDIR)/$(DEVCSS)
+manifest: $(APPDIR)/index.html $(APPDIR)/$(DEVJS) $(APPDIR)/$(DEVCSS)
 	@if test -f $(MANIFESTNAME); then \
 		./inc_manifest_release.sh $(MANIFESTNAME); \
 	else \
 		echo "CACHE MANIFEST" > $(MANIFESTNAME); \
 		echo "#rel 1" >> $(MANIFESTNAME); \
-		echo "index.html" >> $(MANIFESTNAME); \
-		echo $(DEVJS) >> $(MANIFESTNAME); \
-		echo $(DEVCSS) >> $(MANIFESTNAME); \
-		echo "NETWORK:" >> $(MANIFESTNAME); \
-		echo "http://code.jquery.com/mobile/1.1.0/jquery.mobile-1.1.0.min.css" >> $(MANIFESTNAME); \
+		find $(APPDIR) -type f -not -name $(MANIFESTNAME) | sed -e 's#$(APPDIR)/##g' >> $(MANIFESTNAME); \
 	fi
 
-${DEVDIR}/index.html: index.html
+$(APPDIR)/index.html: index.html
 	@mkdir -p $(@D)
 	cp $< $@
 
 # Lint javascript files #
-${DEVDIR}/js/%.js: js/%.js
+$(DEVDIR)/js/%.js: js/%.js
 	@mkdir -p $(@D)
 	@# Prepend jslintrc to defined global variables #
 	@more jslintrc | cat - $< > /tmp/$(notdir $<)
@@ -72,67 +70,79 @@ ${DEVDIR}/js/%.js: js/%.js
 	cp $< $@
 
 # Dependencies #
-${DEVDIR}/lib/route.js:
+$(DEVDIR)/lib/route.js:
 	cp js/lib/route.js $@
 
-${DEVDIR}/lib/url.js:
+$(DEVDIR)/lib/url.js:
 	cp js/lib/url.js $@
 
-${DEVDIR}/lib/qunit.%:
+$(DEVDIR)/lib/qunit.%:
 	@mkdir -p $(@D)
 	curl -s -o $@ http://code.jquery.com/qunit/qunit-1.5.0$(suffix $@)
 
-${DEVDIR}/lib/jquery.js:
+$(DEVDIR)/lib/jquery.js:
 	@mkdir -p $(@D)
 	curl -s -o $@ http://code.jquery.com/jquery-1.7.2.js
 
-${DEVDIR}/lib/sinon.js:
+$(DEVDIR)/lib/sinon.js:
 	@mkdir -p $(@D)
 	curl -s -o $@ http://sinonjs.org/releases/sinon-1.3.4.js
 
-${DEVDIR}/lib/jquery-mobile.js:
+$(DEVDIR)/lib/jquery.mobile.js:
 	@mkdir -p $(@D)
 	curl -s -o $@ http://code.jquery.com/mobile/1.1.1/jquery.mobile-1.1.1.js
 
-${DEVDIR}/lib/mustache.js:
+$(DEVDIR)/lib/jquery.mobile.css:
+	@mkdir -p $(@D)
+	curl -s -o $@ http://code.jquery.com/mobile/1.1.0/jquery.mobile-1.1.0.css
+
+$(DEVDIR)/lib/jquery.mobile.zip:
+	@mkdir -p $(@D)
+	@mkdir -p $(APPDIR)
+	curl -s -o $@ http://code.jquery.com/mobile/1.1.0/jquery.mobile-1.1.0.zip
+	unzip $@ -d $(DEVDIR) 'jquery.mobile-?.?.?/images/*'
+	cp -r $(DEVDIR)/jquery.mobile-1.1.0/images $(APPDIR)
+	rm -rf $(DEVDIR)/jquery.mobile-1.1.0
+
+$(DEVDIR)/lib/mustache.js:
 	@mkdir -p $(@D)
 	curl -s -o $@ https://raw.github.com/janl/mustache.js/master/mustache.js
 
-${DEVDIR}/lib/spin.js:
+$(DEVDIR)/lib/spin.js:
 	@mkdir -p $(@D)
 	curl -s -o $@ http://fgnass.github.com/spin.js/dist/spin.js
 
-${DEVDIR}/lib/swipe.js:
+$(DEVDIR)/lib/swipe.js:
 	@mkdir -p $(@D)
 	curl -s -o $@ https://raw.github.com/bradbirdsall/Swipe/master/swipe.js
 
-${DEVDIR}/lib/modernizr.js:
+$(DEVDIR)/lib/modernizr.js:
 	@mkdir -p $(@D)
 	curl -s -o $@ http://modernizr.com/downloads/modernizr-2.5.3.js
 
 # Concatenation #
-${DEVDIR}/$(DEVJS): $(CATJSFILES)
+$(APPDIR)/$(DEVJS): $(CATJSFILES)
 	@mkdir -p $(@D)
 	cat $^ > $@
 
-${DEVDIR}/$(DEVCSS): $(CATCSSFILES)
+$(APPDIR)/$(DEVCSS): $(CATCSSFILES)
 	@mkdir -p $(@D)
 	cat $^ > $@
 
 #########################################
 # Automated test
 #########################################
-test: dev $(patsubst js/tests/%_test.html, ${DEVDIR}/tests/%_test.html.ok, $(wildcard js/tests/*_test.html))
+test: dev $(patsubst js/tests/%_test.html, $(DEVDIR)/tests/%_test.html.ok, $(wildcard js/tests/*_test.html))
 
-${DEVDIR}/tests/%_test.html: js/tests/%_test.html
+$(DEVDIR)/tests/%_test.html: js/tests/%_test.html
 	@mkdir -p $(@D)
 	cp $< $@
 
-${DEVDIR}/tests/%_test.js: js/tests/%_test.js
+$(DEVDIR)/tests/%_test.js: js/tests/%_test.js
 	@mkdir -p $(@D)
 	cp $< $@
 
-${DEVDIR}/tests/%_test.html.ok: ${DEVDIR}/tests/%_test.html ${DEVDIR}/tests/%_test.js ${DEVDIR}/js/%.js
+$(DEVDIR)/tests/%_test.html.ok: $(DEVDIR)/tests/%_test.html $(DEVDIR)/tests/%_test.js $(DEVDIR)/js/%.js
 	xvfb-run phantomjs js/tests/run-qunit.js $<
 	@sleep 1
 	touch $@
@@ -142,16 +152,16 @@ ${DEVDIR}/tests/%_test.html.ok: ${DEVDIR}/tests/%_test.html ${DEVDIR}/tests/%_te
 #########################################
 
 # Sort files for concatenation
-#CATFINALJSFILES = ${DEVDIR}/lib/jquery.js ${DEVDIR}/lib/mustache.js ${DEVDIR}/lib/spin.js ${DEVDIR}/lib/modernizr.js ${DEVDIR}/lib/swipe.js ${DEVDIR}/js/jquery.slapos.js ${DEVDIR}/js/init.js ${DEVDIR}/lib/jquery-mobile.js ${DEVDIR}/js/url.js ${DEVDIR}/js/route.js ${DEVDIR}/js/main.js ${DEVDIR}/js/render.js ${DEVDIR}/js/panels.js ${DEVDIR}/js/pages.js ${DEVDIR}/js/pages.mobile.js ${DEVDIR}/js/pages.tablet.js ${DEVDIR}/js/pages.desktop.js
+#CATFINALJSFILES = $(DEVDIR)/lib/jquery.js $(DEVDIR)/lib/mustache.js $(DEVDIR)/lib/spin.js $(DEVDIR)/lib/modernizr.js $(DEVDIR)/lib/swipe.js $(DEVDIR)/js/jquery.slapos.js $(DEVDIR)/js/init.js $(DEVDIR)/lib/jquery-mobile.js $(DEVDIR)/js/url.js $(DEVDIR)/js/route.js $(DEVDIR)/js/main.js $(DEVDIR)/js/render.js $(DEVDIR)/js/panels.js $(DEVDIR)/js/pages.js $(DEVDIR)/js/pages.mobile.js $(DEVDIR)/js/pages.tablet.js $(DEVDIR)/js/pages.desktop.js
 
-#release: ${DEVDIR}/lib/jquery.js ${DEVDIR}/lib/jquery-mobile.js ${DEVDIR}/lib/modernizr.js ${DEVDIR}/lib/mustache.js ${DEVDIR}/lib/spin.js ${DEVDIR}/lib/swipe.js $(patsubst %.js, ${DEVDIR}/js/%.js, $(JSFILES)) ${DEVDIR}/index.html ${DEVDIR}/$(FINALJS)
+#release: $(DEVDIR)/lib/jquery.js $(DEVDIR)/lib/jquery-mobile.js $(DEVDIR)/lib/modernizr.js $(DEVDIR)/lib/mustache.js $(DEVDIR)/lib/spin.js $(DEVDIR)/lib/swipe.js $(patsubst %.js, $(DEVDIR)/js/%.js, $(JSFILES)) $(DEVDIR)/index.html $(DEVDIR)/$(FINALJS)
 
  #Concatenation, minification #
-#${DEVDIR}/$(FINALJS): $(CATFINALJSFILES)
+#$(DEVDIR)/$(FINALJS): $(CATFINALJSFILES)
 	#@mkdir -p $(@D)
 	#cat $^ | uglifyjs > $@
 
-#tarball: ${DEVDIR}/$(FINALJS) ${DEVDIR}/index.html
+#tarball: $(DEVDIR)/$(FINALJS) $(DEVDIR)/index.html
 	#tar -czf $(TARBALL) $^
 
 #export: tarball
@@ -161,7 +171,7 @@ ${DEVDIR}/tests/%_test.html.ok: ${DEVDIR}/tests/%_test.html ${DEVDIR}/tests/%_te
 #########################################
 clean:
 	@echo soft cleaning
-	rm -rf ${DEVDIR}/index.html ${DEVDIR}/slapos.* ${DEVDIR}/js
+	rm -rf $(APPDIR)
 cleanall: 
 	@echo cleaning
-	rm -rf ${DEVDIR} ${RELDIR} $(TARBALL)
+	rm -rf $(DEVDIR) ${RELDIR} $(TARBALL)
diff --git a/vifib/index.html b/vifib/index.html
index e91c0ac263da2511edeb466ef17d65c4083158ce..6f7ea4e45793cdf1afb61dab8e4fa2f00b251427 100644
--- a/vifib/index.html
+++ b/vifib/index.html
@@ -3,7 +3,7 @@
 <head>
     <meta http-equiv="content-type" content="text/html; charset=utf-8">
     <meta name="viewport" content="width=device-width, initial-scale=1">
-    <link rel="stylesheet" href="http://code.jquery.com/mobile/1.1.0/jquery.mobile-1.1.0.min.css" />
+    <link rel="stylesheet" href="slapos.css" />
     <script src="slapos.js"></script>
     <style>
         .ui-content{