diff --git a/pom.xml b/pom.xml
index bc0158879cc86ca568cd7b6d25d78c2a65c657c8..9cbfee396949026204ba72f8bffe6e053b2b1c55 100755
--- a/pom.xml
+++ b/pom.xml
@@ -91,7 +91,19 @@
 	<artifactId>icu4j</artifactId>
 	<version>52.1</version>
 </dependency>
-  </dependencies>
+  <dependency>
+    <groupId>org.renjin</groupId>
+    <artifactId>renjin-script-engine</artifactId>
+    <version>RELEASE</version>
+  </dependency>
+</dependencies>
+<repositories>
+  <repository>
+    <id>bedatadriven</id>
+    <name>bedatadriven public repo</name>
+    <url>https://nexus.bedatadriven.com/content/groups/public/</url>
+  </repository>
+</repositories>
   <build>
     <plugins>
       <plugin>
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..ce74dd77126f5a0ec614490e1e35acc50fb552ac
--- /dev/null
+++ b/src/main/java/no/nibio/vips/model/RenjinModel.java
@@ -0,0 +1,77 @@
+/*
+ * 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();
+    }
+}