diff --git a/pom.xml b/pom.xml
index 22ca74301b34b586f6b5ebbc3c2e02be63dd1615..49bdcd6b9a61c91aa4d2fbc70af2dce3f26bc8f7 100755
--- a/pom.xml
+++ b/pom.xml
@@ -100,12 +100,12 @@
 <dependency>
             <groupId>org.geotools</groupId>
             <artifactId>gt-api</artifactId>
-            <version>20.3</version>
-        </dependency>
-        <dependency>
+            <version>20.5</version>
+</dependency>
+<dependency>
         <groupId>org.geotools</groupId>
         <artifactId>gt-epsg-hsql</artifactId>
-        <version>20.3</version>
+        <version>20.5</version>
     </dependency>
   
 <dependency>
@@ -130,19 +130,32 @@
     <artifactId>unit-ri</artifactId>
     <version>1.0.3</version>
 </dependency>
-
+<dependency>
+    <groupId>org.renjin</groupId>
+    <artifactId>renjin-script-engine</artifactId>
+    <version>3.5-beta76</version>
+  </dependency>
 </dependencies>
 <repositories>
-  <repository>
+    <repository>
     <id>bedatadriven</id>
     <name>bedatadriven public repo</name>
     <url>https://nexus.bedatadriven.com/content/groups/public/</url>
   </repository>
-  <repository>
+    <repository>
       <id>osgeo</id>
-      <name>OSGEO</name>
-      <url>https://download.osgeo.org/webdav/geotools/</url>
-  </repository>
+      <name>OSGeo Release Repository</name>
+      <url>https://repo.osgeo.org/repository/release/</url>
+      <snapshots><enabled>false</enabled></snapshots>
+      <releases><enabled>true</enabled></releases>
+    </repository>
+    <repository>
+      <id>osgeo-snapshot</id>
+      <name>OSGeo Snapshot Repository</name>
+      <url>https://repo.osgeo.org/repository/snapshot/</url>
+      <snapshots><enabled>true</enabled></snapshots>
+      <releases><enabled>false</enabled></releases>
+    </repository>
     <repository>
         <id>jitpack.io</id>
         <url>https://jitpack.io</url>
diff --git a/src/main/java/no/nibio/vips/model/RenjinModel.java b/src/main/java/no/nibio/vips/model/RenjinModel.java
new file mode 100644
index 0000000000000000000000000000000000000000..5858a04ed9d8c7c5bceed8b9092cc922bef68b70
--- /dev/null
+++ b/src/main/java/no/nibio/vips/model/RenjinModel.java
@@ -0,0 +1,71 @@
+/*  
+ * Copyright (c) 2017 NIBIO <http://www.nibio.no/>.  
+ *  
+ * This file is part of VIPSCommon. 
+ * VIPSCommon is free software: you can redistribute it and/or modify
+ * it under the terms of the NIBIO Open Source License as published by
+ * NIBIO, either version 1 of the License, or (at your option) any
+ * later version.
+ *
+ * VIPSCommon is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * NIBIO Open Source License for more details.
+ *
+ * You should have received a copy of the NIBIO Open Source License
+ * along with VIPSCommon.  If not, see <http://www.nibio.no/licenses/>.
+ *
+ */
+
+package no.nibio.vips.model;
+
+import java.io.InputStreamReader;
+import javax.script.ScriptEngine;
+import javax.script.ScriptException;
+import org.renjin.script.RenjinScriptEngineFactory;
+import org.renjin.sexp.ExternalPtr;
+
+/**
+ * When implementing a model using Renjin (http://www.renjin.org/ - R on the
+ * Java Virtual Machine), 
+ * you must extend this class.
+ * @copyright 2017
+ * <a href="http://www.nibio.no/">NIBIO</a> * @author Tor-Einar Skog
+ * <tor-einar.skog@nibio.no>
+ */
+public abstract class RenjinModel {
+
+    protected ScriptEngine engine;
+
+    public RenjinModel() {
+        // create a Renjin engine:         
+        RenjinScriptEngineFactory factory = new RenjinScriptEngineFactory();
+        engine = factory.getScriptEngine();
+    }
+
+    /**
+     * Run an R script file available on the classpath * @param scriptPath *
+     * @throws ScriptException
+     */
+    public void runRScript(String scriptPath) throws ScriptException {
+        InputStreamReader fr = new java.io.InputStreamReader(this.getClass().getResourceAsStream(scriptPath));
+        engine.eval(fr);
+    }
+
+    /**
+     * Place a Java object in the Renjin script engine * @param objectName *
+     * @param object
+     */
+    public void placeObjectInScriptEngine(String objectName, Object object) {
+        engine.put(objectName, object);
+    }
+
+    /**
+     * @param objectName * @return a Java object from the Renjin script
+     * engine
+     */
+    public Object getObjectFromScriptEngine(String objectName) {
+        ExternalPtr ptr = (ExternalPtr) engine.get(objectName);
+        return ptr.getInstance();
+    }
+}