diff --git a/build.sh b/build.sh
index cf874db1b7079a0b1fd49da3d211803de48b5fcc..7d9f9a1cf8509630d101e7fcfc1f1f05c4a80abb 100755
--- a/build.sh
+++ b/build.sh
@@ -46,5 +46,15 @@ if [ $? -ne 0 ]; then
         exit 1
 fi
 
+echo "" >> $LOG
+echo "-------------------------------" >> $LOG
+echo "compiling vipra-rest" | tee -a $LOG
+echo "-------------------------------" >> $LOG
+$MVN -f ./vipra-rest/pom.xml package >> $LOG 2>&1
+if [ $? -ne 0 ]; then
+        echo "error"
+        exit 1
+fi
+
 echo "complete"
 exit $?
diff --git a/ma-impl.sublime-workspace b/ma-impl.sublime-workspace
index 19022d5e430ba28656ede4fa81491286af9d730d..86496c05d7c5a35d39bd9dfa5634583ec6b2f83c 100644
--- a/ma-impl.sublime-workspace
+++ b/ma-impl.sublime-workspace
@@ -280,10 +280,10 @@
 	"buffers":
 	[
 		{
-			"contents": "curl -XPOST 'http://localhost:9200/articles/_search' -d '{\"query\":{\"match\":{\"_all\":\"ibm\"}},\"_source\":{\"exclude\":[\"text\"]}}'",
+			"file": "vipra-ui/app/templates/index.hbs",
 			"settings":
 			{
-				"buffer_size": 123,
+				"buffer_size": 1290,
 				"line_ending": "Unix"
 			}
 		}
@@ -468,10 +468,16 @@
 		"/home/eike/repos/master/ma-impl",
 		"/home/eike/repos/master/ma-impl/vipra-ui",
 		"/home/eike/repos/master/ma-impl/vipra-ui/app",
-		"/home/eike/repos/master/ma-impl/vipra-ui/app/adapters"
+		"/home/eike/repos/master/ma-impl/vipra-ui/app/adapters",
+		"/home/eike/repos/master/ma-impl/vipra-ui/app/components",
+		"/home/eike/repos/master/ma-impl/vipra-ui/app/helpers",
+		"/home/eike/repos/master/ma-impl/vipra-ui/app/routes",
+		"/home/eike/repos/master/ma-impl/vipra-ui/app/templates"
 	],
 	"file_history":
 	[
+		"/home/eike/repos/master/ma-impl/vipra-ui/app/templates/application.hbs",
+		"/home/eike/repos/master/ma-impl/vipra-ui/app/components/pagination-bar.js",
 		"/home/eike/.cache/.fr-kZOCSD/META-INF/MANIFEST.MF",
 		"/home/eike/repos/master/ma-impl/Vagrantfile",
 		"/home/eike/repos/master/ma-impl/vipra-ui/app/routes/topics/index.js",
@@ -482,9 +488,7 @@
 		"/home/eike/repos/master/ma-impl/vipra-ui/app/components/items-list.js",
 		"/home/eike/repos/master/ma-impl/vipra-ui/app/templates/components/items-list.hbs",
 		"/home/eike/repos/master/ma-impl/vipra-ui/app/templates/words/index.hbs",
-		"/home/eike/repos/master/ma-impl/vipra-ui/app/templates/application.hbs",
 		"/home/eike/repos/master/ma-impl/vipra-ui/app/templates/components/pagination-bar.hbs",
-		"/home/eike/repos/master/ma-impl/vipra-ui/app/components/pagination-bar.js",
 		"/home/eike/repos/master/ma-impl/vipra-ui/app/controllers/words/index.js",
 		"/home/eike/repos/master/ma-impl/vipra-ui/app/controllers/words.js",
 		"/home/eike/repos/master/ma-impl/vipra-ui/app/adapters/application.js",
@@ -928,23 +932,26 @@
 			[
 				{
 					"buffer": 0,
+					"file": "vipra-ui/app/templates/index.hbs",
 					"semi_transient": false,
 					"settings":
 					{
-						"buffer_size": 123,
+						"buffer_size": 1290,
 						"regions":
 						{
 						},
 						"selection":
 						[
 							[
-								123,
-								123
+								1271,
+								1271
 							]
 						],
 						"settings":
 						{
-							"syntax": "Packages/Text/Plain text.tmLanguage"
+							"syntax": "Packages/Handlebars/grammars/Handlebars.tmLanguage",
+							"tab_size": 2,
+							"translate_tabs_to_spaces": true
 						},
 						"translation.x": 0.0,
 						"translation.y": 0.0,
diff --git a/vipra-rest/pom.xml b/vipra-rest/pom.xml
index 9606dffeda6022f3b758a599b01e8c0c58f6c927..215641500b1089801d76dfc51e3409bbd7d4967a 100644
--- a/vipra-rest/pom.xml
+++ b/vipra-rest/pom.xml
@@ -21,10 +21,6 @@
 		<jacksonVersion>2.7.0</jacksonVersion>
 	</properties>
 
-	<build>
-		<finalName>vipra-rest</finalName>
-	</build>
-
 	<dependencies>
 		<!-- Jersey REST -->
 		<dependency>
@@ -108,4 +104,17 @@
 			<version>0.0.1-SNAPSHOT</version>
 		</dependency>
 	</dependencies>
+
+	<build>
+		<finalName>vipra-rest</finalName>
+		<plugins>
+			<plugin>
+				<groupId>org.apache.maven.plugins</groupId>
+				<artifactId>maven-surefire-plugin</artifactId>
+				<configuration>
+					<skipTests>true</skipTests>
+				</configuration>
+			</plugin>
+		</plugins>
+	</build>
 </project>
diff --git a/vipra-util/src/main/java/de/vipra/util/Config.java b/vipra-util/src/main/java/de/vipra/util/Config.java
index 742aaa47a0785f3fa8a1b1e43878ffa74b1d5642..77417165150a5700226a6f94569c38a7c279c6ad 100644
--- a/vipra-util/src/main/java/de/vipra/util/Config.java
+++ b/vipra-util/src/main/java/de/vipra/util/Config.java
@@ -126,32 +126,41 @@ public class Config {
 			if (value != null) {
 				Object parsedValue = null;
 				try {
-					switch (entry.getValue().getType().getSimpleName()) {
-						case "int":
-						case "Integer":
-							parsedValue = Integer.parseInt(value);
-							break;
-						case "double":
-						case "Double":
-							parsedValue = Double.parseDouble(value);
-							break;
-						case "float":
-						case "Float":
-							parsedValue = Float.parseFloat(value);
-							break;
-						case "boolean":
-						case "Boolean":
-							parsedValue = Boolean.parseBoolean(value);
-							break;
-						case "String":
-							parsedValue = value;
-							break;
-						default:
-							if (Enum.class.isAssignableFrom(entry.getValue().getType())) {
-								parsedValue = searchEnum((Class<Enum>) entry.getValue().getType(), value);
-							}
-							break;
+					Class<?> clazz = entry.getValue().getType();
+					if (clazz == Boolean.class || clazz == Boolean.TYPE) {
+						// boolean
+						parsedValue = Boolean.parseBoolean(value);
+					} else if (clazz == Character.class || clazz == Character.TYPE) {
+						// char
+						if (value.length() == 1)
+							parsedValue = value.charAt(0);
+					} else if (clazz == Byte.class || clazz == Byte.TYPE) {
+						// byte
+						parsedValue = Byte.parseByte(value);
+					} else if (clazz == Short.class || clazz == Short.TYPE) {
+						// short
+						parsedValue = Short.parseShort(value);
+					} else if (clazz == Integer.class || clazz == Integer.TYPE) {
+						// int
+						parsedValue = Integer.parseInt(value);
+					} else if (clazz == Long.class || clazz == Long.TYPE) {
+						// long
+						parsedValue = Long.parseLong(value);
+					} else if (clazz == Float.class || clazz == Float.TYPE) {
+						// float
+						parsedValue = Float.parseFloat(value);
+					} else if (clazz == Double.class || clazz == Double.TYPE) {
+						// double
+						parsedValue = Double.parseDouble(value);
+					} else if (Enum.class.isAssignableFrom(clazz)) {
+						// enum
+						parsedValue = searchEnum((Class<Enum>) entry.getValue().getType(), value);
+					} else {
+						// something else
+						log.warn("unrecognized config value type: " + clazz);
+						continue;
 					}
+
 					entry.getValue().set(this, parsedValue);
 				} catch (Exception e) {
 					log.error("could not read config value " + entry.getKey(), e);