diff --git a/pom.xml b/pom.xml
index 94ff7bd03760ff25fb31e65637b5d0a039da7b53..29af3cfb507310d34edbcef1d5d6a1c83b851e60 100644
--- a/pom.xml
+++ b/pom.xml
@@ -18,33 +18,33 @@
         <relativePath /> <!-- lookup parent from repository -->
     </parent>
 
-	<profiles>
-		<profile>
-			<id>test</id>
-			<properties>
-		        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
-		        <java.version>1.8</java.version>
-				<connection.driver_class>org.h2.Driver</connection.driver_class>
-				<connection.url>jdbc:h2:mem:test</connection.url>
-				<connection.username>root</connection.username>
-				<connection.password>root</connection.password>
-				<hibernate.dialect>org.hibernate.dialect.H2Dialect</hibernate.dialect>
-				<schema.deploy>true</schema.deploy>
-			</properties>
-		</profile>
-		<profile>
-			<id>prod</id>
-			<properties>
-		        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
-		        <java.version>1.8</java.version>
-				<connection.driver_class>org.postgresql.Driver</connection.driver_class>
-				<connection.url>jdbc:postgresql://hbpmdw1.chuv.ch:31432/portal</connection.url>
-				<connection.username>portal</connection.username>
-				<connection.password>iaezXODVLb1e70I</connection.password>
-				<hibernate.dialect>org.hibernate.dialect.PostgreSQL82Dialect</hibernate.dialect>
-				<schema.deploy>false</schema.deploy>
-			</properties>
-		</profile>
+    <profiles>
+        <profile>
+            <id>test</id>
+            <properties>
+                <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
+                <java.version>1.8</java.version>
+                <connection.driver_class>org.h2.Driver</connection.driver_class>
+                <connection.url>jdbc:h2:mem:test</connection.url>
+                <connection.username>root</connection.username>
+                <connection.password>root</connection.password>
+                <hibernate.dialect>org.hibernate.dialect.H2Dialect</hibernate.dialect>
+                <schema.deploy>true</schema.deploy>
+            </properties>
+        </profile>
+        <profile>
+            <id>prod</id>
+            <properties>
+                <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
+                <java.version>1.8</java.version>
+                <connection.driver_class>org.postgresql.Driver</connection.driver_class>
+                <connection.url>jdbc:postgresql://hbpmdw1.chuv.ch:31432/portal</connection.url>
+                <connection.username>portal</connection.username>
+                <connection.password>iaezXODVLb1e70I</connection.password>
+                <hibernate.dialect>org.hibernate.dialect.PostgreSQL82Dialect</hibernate.dialect>
+                <schema.deploy>false</schema.deploy>
+            </properties>
+        </profile>
         <profile>
             <id>dev</id>
             <properties>
@@ -58,7 +58,7 @@
                 <schema.deploy>false</schema.deploy>
             </properties>
         </profile>
-	</profiles>
+    </profiles>
 
     <dependencies>
         <dependency>
@@ -77,10 +77,10 @@
             <groupId>org.springframework.security.oauth</groupId>
             <artifactId>spring-security-oauth2</artifactId>
         </dependency>
-		<dependency>
-			<groupId>org.springframework</groupId>
-			<artifactId>spring-orm</artifactId>
-		</dependency>
+        <dependency>
+            <groupId>org.springframework</groupId>
+            <artifactId>spring-orm</artifactId>
+        </dependency>
         <dependency>
             <groupId>org.webjars</groupId>
             <artifactId>angularjs</artifactId>
@@ -143,30 +143,30 @@
     </dependencies>
 
     <build>
-    	<resources>
-    		<resource>
-	    		<directory>src/main/resources</directory>
-	    		<includes><include>**/*.csv</include></includes>
-	    		<excludes><exclude>**/*.xml</exclude></excludes>
-    		</resource>
-    		<resource>
-	    		<directory>src/main/resources</directory>
-	    		<includes><include>**/*.xml</include></includes>
-	    		<excludes><exclude>**/*.csv</exclude></excludes>
-	    		<filtering>true</filtering>
-    		</resource>
-    	</resources>
-    	
+        <resources>
+            <resource>
+                <directory>src/main/resources</directory>
+                <includes><include>**/*.csv</include></includes>
+                <excludes><exclude>**/*.xml</exclude></excludes>
+            </resource>
+            <resource>
+                <directory>src/main/resources</directory>
+                <includes><include>**/*.xml</include></includes>
+                <excludes><exclude>**/*.csv</exclude></excludes>
+                <filtering>true</filtering>
+            </resource>
+        </resources>
+
         <plugins>
-			<plugin>
-				<groupId>org.apache.maven.plugins</groupId>
-				<artifactId>maven-resources-plugin</artifactId>
-				<version>2.3</version>
-				<configuration>
-					<!-- specify UTF-8, ISO-8859-1 or any other file encoding -->
-					<encoding>UTF-8</encoding>
-				</configuration>
-			</plugin>
+            <plugin>
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-resources-plugin</artifactId>
+                <version>2.3</version>
+                <configuration>
+                    <!-- specify UTF-8, ISO-8859-1 or any other file encoding -->
+                    <encoding>UTF-8</encoding>
+                </configuration>
+            </plugin>
             <plugin>
                 <groupId>org.springframework.boot</groupId>
                 <artifactId>spring-boot-maven-plugin</artifactId>
@@ -184,6 +184,14 @@
                     </execution>
                 </executions>
             </plugin>
+            <plugin>
+                <artifactId>maven-compiler-plugin</artifactId>
+                <version>3.1</version>
+                <configuration>
+                    <source>1.8</source>
+                    <target>1.8</target>
+                </configuration>
+            </plugin>
         </plugins>
     </build>
 
diff --git a/src/docker/build/mip.sh b/src/docker/build/mip.sh
index 59bc112e1a1de37fae7c5a79b815aa9196d1b8aa..cfae68474c42a1e66b80edb0ea849911ddd8eef4 100644
--- a/src/docker/build/mip.sh
+++ b/src/docker/build/mip.sh
@@ -1,5 +1,3 @@
 #!/usr/bin/env bash
 
-# Configuration is read in the config folder relative to current path
-cd /opt/portal/
-/usr/bin/java -jar /opt/portal/lib/mip.jar
+/usr/bin/java -DconfigFile=/opt/portal/config/application.yml -jar /opt/portal/lib/mip.jar
diff --git a/src/main/java/org/hbp/mip/controllers/ModelsApi.java b/src/main/java/org/hbp/mip/controllers/ModelsApi.java
index 6f52bc2b236f1f373b34b29956a97ea11ff6d346..59275a8798a9fec304a88d765216cf2b13005147 100644
--- a/src/main/java/org/hbp/mip/controllers/ModelsApi.java
+++ b/src/main/java/org/hbp/mip/controllers/ModelsApi.java
@@ -94,7 +94,8 @@ public class ModelsApi {
             if(session.getTransaction() != null)
             {
                 session.getTransaction().rollback();
-            }        }
+            }
+        }
 
         return new ResponseEntity<List<Model>>(HttpStatus.OK).ok(models);
     }
@@ -112,7 +113,8 @@ public class ModelsApi {
         User user = mipApplication.getUser(principal);
 
         // Set up model
-        model.setSlug(model.getTitle().toLowerCase());
+        model.setSlug(model.getConfig().getTitle().get("text").toLowerCase());
+        model.setTitle(model.getConfig().getTitle().get("text"));
         model.setValid(true);
         model.setCreatedBy(user);
         model.setCreatedAt(new Date());
@@ -133,32 +135,6 @@ public class ModelsApi {
         return new ResponseEntity<Void>(HttpStatus.OK);
     }
 
-    @ApiOperation(value = "Get SVG", response = Model.class)
-    @ApiResponses(value = { @ApiResponse(code = 200, message = "Found"), @ApiResponse(code = 404, message = "Not found") })
-    @RequestMapping(value = "/{slug}.svg", produces = {"image/svg+xml"}, method = RequestMethod.GET)
-    public ResponseEntity<String> getSVG(
-            @ApiParam(value = "slug", required = true) @PathVariable("slug") String slug
-    )  {
-
-        // Query DB
-        Session session = sessionFactoryBean.getCurrentSession();
-        Model model = null;
-        try{
-            session.beginTransaction();
-            org.hibernate.Query query = session.createQuery("from Model where slug= :slug");
-            query.setString("slug", slug);
-            model = (Model) query.uniqueResult();
-            session.getTransaction().commit();
-        } catch (Exception e)
-        {
-            if(session.getTransaction() != null)
-            {
-                session.getTransaction().rollback();
-            }        }
-
-        return new ResponseEntity<String>(HttpStatus.OK).ok(model.getChart().getSvg());
-    }
-
     @ApiOperation(value = "Get a model", response = Model.class)
     @ApiResponses(value = { @ApiResponse(code = 200, message = "Found"), @ApiResponse(code = 404, message = "Not found") })
     @RequestMapping(value = "/{slug}", method = RequestMethod.GET)
diff --git a/src/main/java/org/hbp/mip/controllers/VariablesApi.java b/src/main/java/org/hbp/mip/controllers/VariablesApi.java
index bf64e31079a6503ba9cb5e694278d2e58c0f0ef5..ee01a9dc53d9efa780add3646a4ac963c4cc7f9e 100644
--- a/src/main/java/org/hbp/mip/controllers/VariablesApi.java
+++ b/src/main/java/org/hbp/mip/controllers/VariablesApi.java
@@ -52,7 +52,8 @@ public class VariablesApi {
             if(session.getTransaction() != null)
             {
                 session.getTransaction().rollback();
-            }        }
+            }
+        }
 
         return new ResponseEntity<List<Variable>>(HttpStatus.OK).ok(variables);
     }
diff --git a/src/main/java/org/hbp/mip/model/Config.java b/src/main/java/org/hbp/mip/model/Config.java
new file mode 100644
index 0000000000000000000000000000000000000000..2e6b081c20c39d287933410211f0567368815cfe
--- /dev/null
+++ b/src/main/java/org/hbp/mip/model/Config.java
@@ -0,0 +1,87 @@
+package org.hbp.mip.model;
+
+import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
+import io.swagger.annotations.ApiModel;
+
+import javax.persistence.*;
+import java.util.HashMap;
+import java.util.LinkedList;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * Created by mirco on 25.02.16.
+ */
+@Entity
+@Table(name = "`config`")
+@ApiModel(description = "")
+@JsonIgnoreProperties(value = { "id" })
+public class Config {
+    @Id
+    @GeneratedValue(strategy = GenerationType.IDENTITY)
+    private Long id = null;
+    private String type = null;
+    private Integer height = null;
+    @ElementCollection(fetch = FetchType.EAGER)
+    private List<String> yAxisVariables = new LinkedList<>();
+    private String xAxisVariable = null;
+    private Boolean hasXAxis = null;
+    @ElementCollection(fetch = FetchType.EAGER)
+    private Map<String, String> title = new HashMap<>();
+
+    public Long getId() {
+        return id;
+    }
+
+    public void setId(Long id) {
+        this.id = id;
+    }
+
+    public String getType() {
+        return type;
+    }
+
+    public void setType(String type) {
+        this.type = type;
+    }
+
+    public Integer getHeight() {
+        return height;
+    }
+
+    public void setHeight(Integer height) {
+        this.height = height;
+    }
+
+    public List<String> getyAxisVariables() {
+        return yAxisVariables;
+    }
+
+    public void setyAxisVariables(List<String> yAxisVariables) {
+        this.yAxisVariables = yAxisVariables;
+    }
+
+    public String getxAxisVariable() {
+        return xAxisVariable;
+    }
+
+    public void setxAxisVariable(String xAxisVariable) {
+        this.xAxisVariable = xAxisVariable;
+    }
+
+    public Boolean getHasXAxis() {
+        return hasXAxis;
+    }
+
+    public void setHasXAxis(Boolean hasXAxis) {
+        this.hasXAxis = hasXAxis;
+    }
+
+    public Map<String, String> getTitle() {
+        return title;
+    }
+
+    public void setTitle(Map<String, String> title) {
+        this.title = title;
+    }
+}
diff --git a/src/main/java/org/hbp/mip/model/Dataset.java b/src/main/java/org/hbp/mip/model/Dataset.java
index f7f63ec75a0c1840b21b5e888b5990eb276d1edc..d56a618c7499883aff36c37797dc6d8640b19583 100644
--- a/src/main/java/org/hbp/mip/model/Dataset.java
+++ b/src/main/java/org/hbp/mip/model/Dataset.java
@@ -21,9 +21,9 @@ public class Dataset {
     private String code = null;
     private Date date = null;
     @ElementCollection(fetch = FetchType.EAGER)
-    private List<String> header = new LinkedList<String>();
-    @Transient
-    private Map<String, List<Object>> data = new HashMap<>();
+    private List<String> header = new LinkedList<>();
+    @ElementCollection(fetch=FetchType.EAGER)
+    private Map<String, LinkedList<Object>> data = new HashMap<>();
 
     public Dataset() {
     }
@@ -67,11 +67,11 @@ public class Dataset {
         this.header = header;
     }
 
-    public Map<String, List<Object>> getData() {
+    public Map<String, LinkedList<Object>> getData() {
         return data;
     }
 
-    public void setData(Map<String, List<Object>> data) {
+    public void setData(Map<String, LinkedList<Object>> data) {
         this.data = data;
     }
 
@@ -83,7 +83,6 @@ public class Dataset {
         sb.append("  code: ").append(code).append("\n");
         sb.append("  date: ").append(date).append("\n");
         sb.append("  header: ").append(header).append("\n");
-        sb.append("  data: ").append(data).append("\n");
         sb.append("}\n");
         return sb.toString();
     }
diff --git a/src/main/java/org/hbp/mip/model/Model.java b/src/main/java/org/hbp/mip/model/Model.java
index 13b1a61c34afc9a50767c26fe0c3729556c0f50b..53c0e6e9a476a8f886c288d70d285c7d4b5b675c 100644
--- a/src/main/java/org/hbp/mip/model/Model.java
+++ b/src/main/java/org/hbp/mip/model/Model.java
@@ -8,12 +8,10 @@ import com.fasterxml.jackson.annotation.JsonInclude;
 import com.fasterxml.jackson.annotation.JsonProperty;
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
-import org.hibernate.annotations.*;
+import org.hibernate.annotations.Cascade;
 import org.hibernate.annotations.CascadeType;
 
 import javax.persistence.*;
-import javax.persistence.Entity;
-import javax.persistence.Table;
 import java.util.Date;
 
 @Entity
@@ -36,7 +34,7 @@ public class Model {
     private Dataset dataset = null;
     @ManyToOne
     @Cascade(CascadeType.SAVE_UPDATE)
-    private Chart chart = null;
+    private Config config = null;
     @ManyToOne
     private User createdBy = null;
     @ManyToOne
@@ -124,17 +122,14 @@ public class Model {
         this.valid = valid;
     }
 
-    /**
-     * Chart
-     **/
-    @ApiModelProperty(value = "Chart")
-    @JsonProperty("chart")
-    public Chart getChart() {
-        return chart;
+    @ApiModelProperty(value = "Config")
+    @JsonProperty("config")
+    public Config getConfig() {
+        return config;
     }
 
-    public void setChart(Chart chart) {
-        this.chart = chart;
+    public void setConfig(Config config) {
+        this.config = config;
     }
 
     /**
@@ -211,9 +206,7 @@ public class Model {
         sb.append("  slug: ").append(slug).append("\n");
         sb.append("  description: ").append(description).append("\n");
         sb.append("  query: ").append(query).append("\n");
-        sb.append("  dataset: ").append(dataset).append("\n");
         sb.append("  valid: ").append(valid).append("\n");
-        sb.append("  chart: ").append(chart).append("\n");
         sb.append("  createdAt: ").append(createdAt).append("\n");
         sb.append("  updatedAt: ").append(updatedAt).append("\n");
         sb.append("  createdBy: ").append(createdBy).append("\n");
@@ -222,4 +215,5 @@ public class Model {
         sb.append("}\n");
         return sb.toString();
     }
+
 }
diff --git a/src/main/java/org/hbp/mip/utils/CSVUtil.java b/src/main/java/org/hbp/mip/utils/CSVUtil.java
index 756479051dc201c641952c5e572e5085c86c8a53..cfbcded29c30e69721d738ad4419779896da83a7 100644
--- a/src/main/java/org/hbp/mip/utils/CSVUtil.java
+++ b/src/main/java/org/hbp/mip/utils/CSVUtil.java
@@ -27,7 +27,7 @@ public class CSVUtil {
         String code = GenerateDSCode(query);
         Date date = new Date();
         List<String> header = new LinkedList<>();
-        Map<String, List<Object>> data = new HashMap<>();
+        Map<String, LinkedList<Object>> data = new HashMap<>();
 
         List<Variable> variables = new LinkedList<>();
         //variables.addAll(query.getVariables());  // TODO : check that
@@ -50,6 +50,7 @@ public class CSVUtil {
                 String c = v.getCode();
                 int idx = find(c, firstRow);
                 List<Object> l = new LinkedList<>();
+                LinkedList<Object> ll = new LinkedList<>();
                 for (String[] row : rows) {
                     switch (type) {
                         case "T": {
@@ -122,10 +123,9 @@ public class CSVUtil {
                 // TODO : Remove this limit -> only to avoid bug with Virtua's front-end
                 if(l.size() > 50)
                 {
-                    l = l.subList(0, 49);
+                    ll.addAll(l.subList(0,49));
                 }
-                data.put(c, l);
-                System.out.println("Adding "+l.size()+" values to "+c);
+                data.put(c, ll);
             }
         } catch (IOException e) {
             e.printStackTrace();
@@ -302,10 +302,19 @@ public class CSVUtil {
     private static String getTypeFromDB(Variable v)
     {
         Session session = HibernateUtil.getSessionFactory().getCurrentSession();
-        session.beginTransaction();
-        org.hibernate.Query q = session.createQuery("SELECT type FROM Variable where code= :code").setString("code", v.getCode());
-        String type = (String) q.uniqueResult();
-        session.getTransaction().commit();
+        String type = null;
+        try{
+            session.beginTransaction();
+            org.hibernate.Query q = session.createQuery("SELECT type FROM Variable where code= :code").setString("code", v.getCode());
+            type = (String) q.uniqueResult();
+            session.getTransaction().commit();
+        } catch (Exception e)
+        {
+            if(session.getTransaction() != null)
+            {
+                session.getTransaction().rollback();
+            }
+        }
 
         if(type == null)
         {
diff --git a/src/main/resources/hibernate.cfg.xml b/src/main/resources/hibernate.cfg.xml
index 044c40c229c1a9a5aa0b6ae7b795db994c0f7213..7b290ac701bd5b408fd3421db8f6a37f398ec284 100644
--- a/src/main/resources/hibernate.cfg.xml
+++ b/src/main/resources/hibernate.cfg.xml
@@ -17,18 +17,5 @@
         <property name="hibernate.show_sql">false</property>
         <property name="hibernate.hbm2ddl.auto">update</property>
 
-        <mapping class="org.hbp.mip.model.Article"/>
-        <mapping class="org.hbp.mip.model.Chart"/>
-        <mapping class="org.hbp.mip.model.ChartConfigSet"/>
-        <mapping class="org.hbp.mip.model.Dataset"/>
-        <mapping class="org.hbp.mip.model.Model"/>
-        <mapping class="org.hbp.mip.model.Query"/>
-        <mapping class="org.hbp.mip.model.Tag"/>
-        <mapping class="org.hbp.mip.model.User"/>
-        <mapping class="org.hbp.mip.model.Value"/>
-        <mapping class="org.hbp.mip.model.Variable"/>
-        <mapping class="org.hbp.mip.model.Filter"/>
-        <mapping class="org.hbp.mip.model.Group"/>
-
     </session-factory>
 </hibernate-configuration>
diff --git a/src/test/db b/src/test/db
index af28ed02d855345f286e171c758758283c742dff..0484f708e74764f1072ac8f7da67c94f7b38c386 160000
--- a/src/test/db
+++ b/src/test/db
@@ -1 +1 @@
-Subproject commit af28ed02d855345f286e171c758758283c742dff
+Subproject commit 0484f708e74764f1072ac8f7da67c94f7b38c386