diff --git a/src/main/java/no/bioforsk/vips/core/service/ModelResource.java b/src/main/java/no/bioforsk/vips/core/service/ModelResource.java
index 08c5429e9a29bcdc5d4a23fb558adaebc4df5084..b966dfd2c8f39beac4bb6d0b29504b20cbee26bd 100644
--- a/src/main/java/no/bioforsk/vips/core/service/ModelResource.java
+++ b/src/main/java/no/bioforsk/vips/core/service/ModelResource.java
@@ -1,8 +1,7 @@
 package no.bioforsk.vips.core.service;
 
-import java.util.ArrayList;
-import java.util.Date;
-import java.util.List;
+import java.util.logging.Level;
+import java.util.logging.Logger;
 import javax.ws.rs.Consumes;
 import javax.ws.rs.GET;
 import javax.ws.rs.POST;
@@ -11,9 +10,6 @@ import javax.ws.rs.PathParam;
 import javax.ws.rs.Produces;
 import javax.ws.rs.core.Response;
 import no.bioforsk.vips.entity.ModelConfiguration;
-import no.bioforsk.vips.entity.Result;
-import no.bioforsk.vips.entity.ResultImpl;
-import no.bioforsk.vips.entity.Weather;
 import no.bioforsk.vips.model.Model;
 import no.bioforsk.vips.model.factory.ModelFactory;
 
@@ -26,19 +22,106 @@ import no.bioforsk.vips.model.factory.ModelFactory;
 public class ModelResource {
     
     /**
-     * Lists all models available in this instance
-     * @return 
+     * Lists all models available in this instance, using default language (English)
+     * @return list of all models available
      */
     @GET
     @Path("models")
     @Produces("text/plain;charset=UTF-8")
-    public Response printModels()
+    public Response printModelList()
+    {
+        return this.printModelList(null);
+        /*
+        StringBuilder retVal = new StringBuilder();
+        ModelFactory mF = ModelFactory.getInstance();
+        for(String key : mF.getModelList().keySet())
+        {
+            try {
+                retVal.append(key).append(" ").append(mF.getModelInstance(key).getModelName()).append("\n");
+            } catch (InstantiationException | IllegalAccessException ex) {
+                Logger.getLogger(ModelResource.class.getName()).log(Level.SEVERE, null, ex);
+            }
+            
+        }
+        return Response.ok().entity(retVal.toString()).build();*/
+    }
+    
+    /**
+     * Lists all models available in this instance, using default language (English)
+     * @return list of all models available
+     */
+    @GET
+    @Path("models/json")
+    @Produces("application/json;charset=UTF-8")
+    public Response printModelListJSON()
+    {
+        /*
+        StringBuilder retVal = new StringBuilder();
+        ModelFactory mF = ModelFactory.getInstance();
+        for(String key : mF.getModelList().keySet())
+        {
+            try {
+                retVal.append(key).append(" ").append(mF.getModelInstance(key).getModelName()).append("\n");
+            } catch (InstantiationException | IllegalAccessException ex) {
+                Logger.getLogger(ModelResource.class.getName()).log(Level.SEVERE, null, ex);
+            }
+            
+        }
+        return Response.ok().entity(retVal.toString()).build();
+        * */
+        return this.printModelListJSON(null);
+    }
+    
+    /**
+     * Lists all models available in this instance, using default language (English)
+     * @return list of all models available
+     */
+    @GET
+    @Path("models/json/{language}")
+    @Produces("application/json;charset=UTF-8")
+    public Response printModelListJSON(@PathParam("language") String language)
+    {
+        StringBuilder retVal = new StringBuilder();
+        ModelFactory mF = ModelFactory.getInstance();
+        retVal.append("[");
+        boolean first=true;
+        for(String key : mF.getModelList().keySet())
+        {
+            try {
+                if(first) first=false;
+                else retVal.append(",");
+                retVal.append("{");
+                retVal.append("\"modelId\":\"").append(key).append("\", \"modelName\":\"").append(mF.getModelInstance(key).getModelName(language)).append("\"");
+                retVal.append("}");
+                
+            } catch (InstantiationException | IllegalAccessException ex) {
+                Logger.getLogger(ModelResource.class.getName()).log(Level.SEVERE, null, ex);
+            }
+            
+        }
+        retVal.append("]");
+        return Response.ok().entity(retVal.toString()).build();
+    }
+    
+    /**
+     * Lists all models available in this instance, using default language (English)
+     * @return list of all models available
+     */
+    @GET
+    @Path("models/{language}")
+    @Produces("text/plain;charset=UTF-8")
+    public Response printModelList(@PathParam("language") String language)
     {
         StringBuilder retVal = new StringBuilder();
         ModelFactory mF = ModelFactory.getInstance();
         for(String key : mF.getModelList().keySet())
         {
-            retVal.append(key).append("\n");
+            try {
+                retVal.append(key).append(" ").append(mF.getModelInstance(key).getModelName(language)).append("\n");
+            } catch (InstantiationException | IllegalAccessException ex) {
+                Logger.getLogger(ModelResource.class.getName()).log(Level.SEVERE, null, ex);
+            }
+            
         }
         return Response.ok().entity(retVal.toString()).build();
     }
@@ -72,66 +155,65 @@ public class ModelResource {
         return this.printModelUsage(modelId, null);
     }
     
-    /** Tests for XML and JSON output */
-    @GET
-    @Path("models/resulttest")
-    @Produces("application/json")
-    public Response printResultTest()
-    {
-        List<Result> allResults = new ArrayList();
-        Result retVal = new ResultImpl();
-        retVal.setResultValidTime(new Date());
-        retVal.setValue("Parameter1", "Verdi1");
-        retVal.setValue("Parameter2", "Verdi2");
-        allResults.add(retVal);
-        retVal = new ResultImpl();
-        retVal.setResultValidTime(new Date());
-        retVal.setValue("Parameter1", "Verdi5");
-        retVal.setValue("Parameter2", "Verdi7");
-         allResults.add(retVal);
-        return Response.ok().entity(allResults).build();
-    }
-    
     @GET
-    @Path("weather/xml")
-    @Produces("application/xml")
-    public Response printWeatherXML()
+    @Path("models/{modelId}/sampleconfig")
+    @Produces("text/plain;charset=UTF-8")
+    public Response printModelSampleConfig(@PathParam("modelId") String modelId)
     {
-        return Response.ok().entity(new Weather(new Date(),"Goddag, goddag. Dette her er Meteorologisk institutt.æøåæøå")).build();
+        try {
+            String sampleConfig = ModelFactory.getInstance().getModelInstance(modelId).getSampleConfig();
+            return Response.ok().entity(sampleConfig).build();
+        } catch (InstantiationException | IllegalAccessException ex) {
+            Logger.getLogger(ModelResource.class.getName()).log(Level.SEVERE, null, ex);
+            return Response.serverError().build();
+        }
     }
     
     /**
-     * Marshalling fra POJO til JSON gjøres automagisk (med Jackson, tror jeg)
-     * @return gladmelding
+     * Instantiates and runs the requested model
+     * @param config input data for the model
+     * @return list of result objects
      */
-    @GET
-    @Path("weather/json")
+    @POST
+    @Path("models/run")
+    @Consumes("application/json")
     @Produces("application/json")
-    public Response printWeatherJSON()
+    public Response runModel(ModelConfiguration config)
     {
-        return Response.ok().entity(new Weather(new Date(),"Goddag, goddag. Dette her er Meteorologisk institutt.æøåæøå")).build();
+        try
+        {
+            Model calledModel = ModelFactory.getInstance().getModelInstance(config.getModelId());
+            calledModel.setConfiguration(config);
+            return Response.ok().entity(calledModel.getResult()).build();
+        }
+        catch(InstantiationException | IllegalAccessException ex)
+        {
+            Logger.getLogger(ModelResource.class.getName()).log(Level.SEVERE, null, ex);
+            return Response.serverError().build();
+        }
     }
     
     /**
-     * Test for input / POST
+     * Instantiates and runs the requested model
+     * @param modelId
+     * @param config input data for the model
+     * @return list of result objects
      */
-    
     @POST
-    @Path("models/run")
+    @Path("models/{modelId}/run")
     @Consumes("application/json")
     @Produces("application/json")
-    //@Produces("text/plain;charset=UTF-8")
-    public Response runModel(ModelConfiguration config)
+    public Response runModel(@PathParam("modelId") String modelId, ModelConfiguration config)
     {
-        //return Response.ok().entity("runModell called").build();
         try
         {
-            Model calledModel = ModelFactory.getInstance().getModelInstance(config.getModelId());
+            Model calledModel = ModelFactory.getInstance().getModelInstance(modelId);
             calledModel.setConfiguration(config);
             return Response.ok().entity(calledModel.getResult()).build();
         }
-        catch(InstantiationException | IllegalAccessException iae)
+        catch(InstantiationException | IllegalAccessException ex)
         {
+            Logger.getLogger(ModelResource.class.getName()).log(Level.SEVERE, null, ex);
             return Response.serverError().build();
         }
     }