diff --git a/com.oracle.truffle.r.engine/src/com/oracle/truffle/r/engine/REngine.java b/com.oracle.truffle.r.engine/src/com/oracle/truffle/r/engine/REngine.java
index 73345654c9ce22af02c39ac84800246d933ae140..114953b6d876bb669da1b887c726417ebca74dd1 100644
--- a/com.oracle.truffle.r.engine/src/com/oracle/truffle/r/engine/REngine.java
+++ b/com.oracle.truffle.r.engine/src/com/oracle/truffle/r/engine/REngine.java
@@ -51,9 +51,8 @@ public final class REngine {
 
     private REngine(String[] commandArgs, ConsoleHandler consoleHandler) {
         RDefaultPackages defaultPackages = RDefaultPackages.getInstance();
-        this.context = new RContext(defaultPackages, commandArgs, consoleHandler);
+        this.context = RContext.instantiate(defaultPackages, commandArgs, consoleHandler);
         defaultPackages.load(context);
-
     }
 
     /**
diff --git a/com.oracle.truffle.r.runtime/src/com/oracle/truffle/r/runtime/RContext.java b/com.oracle.truffle.r.runtime/src/com/oracle/truffle/r/runtime/RContext.java
index 88f6b4cca6f0302892103cd07cf447e1dc610189..dd5d71c1db8d82135208c65bd3f37d09a5412610 100644
--- a/com.oracle.truffle.r.runtime/src/com/oracle/truffle/r/runtime/RContext.java
+++ b/com.oracle.truffle.r.runtime/src/com/oracle/truffle/r/runtime/RContext.java
@@ -99,13 +99,20 @@ public final class RContext {
         return singleton;
     }
 
-    public RContext(RBuiltinLookup lookup, String[] commandArgs, ConsoleHandler consoleHandler) {
+    public static RContext instantiate(RBuiltinLookup lookup, String[] commandArgs, ConsoleHandler consoleHandler) {
+        if (singleton != null) {
+            throw new IllegalStateException("RContext already instantiated.");
+        }
+        singleton = new RContext(lookup, commandArgs, consoleHandler);
+        return singleton;
+    }
+
+    private RContext(RBuiltinLookup lookup, String[] commandArgs, ConsoleHandler consoleHandler) {
         this.sourceManager = new SourceManager();
         this.lookup = lookup;
         this.commandArgs = commandArgs;
         this.consoleHandler = consoleHandler;
         this.evalWarnings = null;
-        singleton = this;
     }
 
     public RBuiltinLookup getLookup() {