diff --git a/com.oracle.truffle.r.launcher/src/com/oracle/truffle/r/launcher/LegacyLauncher.java b/com.oracle.truffle.r.launcher/src/com/oracle/truffle/r/launcher/LegacyLauncher.java
new file mode 100644
index 0000000000000000000000000000000000000000..2faf5416d6c644264173eee60083a674236cd15b
--- /dev/null
+++ b/com.oracle.truffle.r.launcher/src/com/oracle/truffle/r/launcher/LegacyLauncher.java
@@ -0,0 +1,46 @@
+/*
+ * Copyright (c) 2017, 2018, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code 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 GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+package com.oracle.truffle.r.launcher;
+
+import java.lang.reflect.Method;
+import java.util.Arrays;
+
+import org.graalvm.polyglot.Engine;
+
+public final class LegacyLauncher {
+
+    public static void main(String[] args) throws NoSuchMethodException, SecurityException {
+        String className = args[0];
+        Method loadClassMethod = Engine.class.getDeclaredMethod("loadLanguageClass", String.class);
+        try {
+            loadClassMethod.setAccessible(true);
+            Class<?> result = (Class<?>) loadClassMethod.invoke(null, className);
+            result.getMethod("main", String[].class).invoke(null, (Object) Arrays.copyOfRange(args, 1, args.length));
+        } catch (NoSuchMethodException | SecurityException e) {
+            e.printStackTrace();
+        } catch (Exception e) {
+            e.printStackTrace();
+            System.exit(1);
+        }
+    }
+}
diff --git a/com.oracle.truffle.r.release/src/R_legacy b/com.oracle.truffle.r.release/src/R_legacy
new file mode 100755
index 0000000000000000000000000000000000000000..0022bda1314930a188f9c55d2aa83eb8860308e0
--- /dev/null
+++ b/com.oracle.truffle.r.release/src/R_legacy
@@ -0,0 +1,47 @@
+#!/usr/bin/env bash
+
+source="${BASH_SOURCE[0]}"
+while [ -h "$source" ] ; do
+  prev_source="$source"
+  source="$(readlink "$source")";
+  if [[ "$source" != /* ]]; then
+    # if the link was relative, it was relative to where it came from
+    dir="$( cd -P "$( dirname "$prev_source" )" && pwd )"
+    source="$dir/$source"
+  fi
+done
+EXEC="$( cd -P "$( dirname "$source" )" && pwd )"
+# This script is deployed as jre/languages/R/bin/exec/R
+exec_location=jre/languages/R/bin/exec
+slashes=${exec_location//[^\/]/}
+dir_count=${#slashes}
+JRE="$EXEC"
+for i in $(seq 1 ${dir_count}); do
+  JRE="$( dirname "$JRE" )"
+done
+
+JAVA_ARGS=()
+PROGRAM_ARGS=()
+for opt in "${@:1}"
+do
+    case $opt in
+        -J:*)
+            opt=${opt:3}
+            JAVA_ARGS+=("$opt") ;;
+        *)
+            PROGRAM_ARGS+=("$opt") ;;
+    esac
+done
+
+JAVA_HOME="$( dirname "$JRE" )"
+
+GRAALVMCP=""
+TMPCP="%%GRAALVMCP"
+for cp in ${TMPCP//:/ }
+do
+    GRAALVMCP="$GRAALVMCP$JAVA_HOME/$cp:"
+done
+
+# we can invoke FastR directly, but we do have to set R_HOME
+export R_HOME="$JRE/languages/R"
+exec "$JAVA_HOME/bin/java" -cp "$GRAALVMCP" -noverify -Dgraal.TruffleCompilationThreshold=10000 -Dgraal.TruffleCompilerThreads=2 -Xmx8g "${JAVA_ARGS[@]}" com.oracle.graalvm.launcher.LegacyLauncher com.oracle.truffle.r.launcher.RCommand "${PROGRAM_ARGS[@]}"
diff --git a/com.oracle.truffle.r.release/src/Rscript_legacy b/com.oracle.truffle.r.release/src/Rscript_legacy
new file mode 100755
index 0000000000000000000000000000000000000000..bf3213e47830c996fb234eca034d0a2f8160afb9
--- /dev/null
+++ b/com.oracle.truffle.r.release/src/Rscript_legacy
@@ -0,0 +1,47 @@
+#!/usr/bin/env bash
+
+source="${BASH_SOURCE[0]}"
+while [ -h "$source" ] ; do
+  prev_source="$source"
+  source="$(readlink "$source")";
+  if [[ "$source" != /* ]]; then
+    # if the link was relative, it was relative to where it came from
+    dir="$( cd -P "$( dirname "$prev_source" )" && pwd )"
+    source="$dir/$source"
+  fi
+done
+BIN="$( cd -P "$( dirname "$source" )" && pwd )"
+# This script is deployed as jre/languages/R/bin/Rscript
+bin_location=jre/languages/R/bin
+slashes=${bin_location//[^\/]/}
+dir_count=${#slashes}
+JRE="$BIN"
+for i in $(seq 1 ${dir_count}); do
+  JRE="$( dirname "$JRE" )"
+done
+
+JAVA_ARGS=()
+PROGRAM_ARGS=()
+for opt in "${@:1}"
+do
+    case $opt in
+        -J:*)
+            opt=${opt:3}
+            JAVA_ARGS+=("$opt") ;;
+        *)
+            PROGRAM_ARGS+=("$opt") ;;
+    esac
+done
+
+JAVA_HOME="$( dirname "$JRE" )"
+
+GRAALVMCP=""
+TMPCP="%%GRAALVMCP"
+for cp in ${TMPCP//:/ }
+do
+    GRAALVMCP="$GRAALVMCP$JAVA_HOME/$cp:"
+done
+
+# we can invoke FastR directly, but we do have to set R_HOME
+export R_HOME="$JRE/languages/R"
+exec "$JAVA_HOME/bin/java" -cp "$GRAALVMCP" -noverify -Dgraal.TruffleCompilationThreshold=10000 -Dgraal.TruffleCompilerThreads=2 -Xmx4g "${JAVA_ARGS[@]}" com.oracle.graalvm.launcher.LegacyLauncher com.oracle.truffle.r.launcher.RscriptCommand "${PROGRAM_ARGS[@]}"
diff --git a/mx.fastr/mx_fastr_dists.py b/mx.fastr/mx_fastr_dists.py
index 835c2cc9deb19f6a85e70051d34ed1788944d202..22b48e852c89c8d7921ecbf1463c8eac1fa49710 100644
--- a/mx.fastr/mx_fastr_dists.py
+++ b/mx.fastr/mx_fastr_dists.py
@@ -21,6 +21,7 @@
 # questions.
 #
 import mx
+import mx_sdk
 import mx_fastr
 import os, string, shutil
 from os.path import join, basename, isfile
@@ -208,3 +209,19 @@ def mx_post_parse_cmd_line(opts):
         if isinstance(dist, mx.JARDistribution):
             dist.set_archiveparticipant(FastRArchiveParticipant(dist))
 
+mx_sdk.register_component(mx_sdk.GraalVmLanguage(
+    name='FastR',
+    id='R',
+    documentation_files=['extracted-dependency:fastr:FASTR_GRAALVM_SUPPORT<rffi>/README_FASTR'],
+    license_files=[
+        'link:<support>/COPYRIGHT_FASTR',
+        'link:<support>/LICENSE_FASTR',
+    ],
+    third_party_license_files=[],
+    truffle_jars=['dependency:fastr:FASTR'],
+    support_distributions=['extracted-dependency:fastr:FASTR_GRAALVM_SUPPORT<rffi>'],
+    provided_executables=[
+        'link:<support>/bin/Rscript',
+        'link:<support>/bin/exec/R',
+    ]
+))
diff --git a/mx.fastr/suite.py b/mx.fastr/suite.py
index 65b520b2dac736b7117a0027dd1838c90f34f451..8c0c108de8d4241e21c2280a7763ed5f8be2ae16 100644
--- a/mx.fastr/suite.py
+++ b/mx.fastr/suite.py
@@ -449,20 +449,22 @@ suite = {
       "layout" : {
         "./" : [
           {
-            "source_type": "extracted-dependency",
-            "dependency": "FASTR_RELEASE<rffi>",
-            "path": "*",
-            "exclude": [
+            "source_type" : "extracted-dependency",
+            "dependency" : "FASTR_RELEASE<rffi>",
+            "path" : "*",
+            "exclude" : [
               "COPYRIGHT",
               "LICENSE",
               "README.md",
+              "bin/Rscript",
               "bin/fastr_jars",
+              "bin/exec/R",
             ],
           },
           {
-            "source_type": "extracted-dependency",
-            "dependency": "FASTR_RELEASE<rffi>",
-            "path": "bin/fastr_jars/*",
+            "source_type" : "extracted-dependency",
+            "dependency" : "FASTR_RELEASE<rffi>",
+            "path" : "bin/fastr_jars/*",
             "exclude" : [
               "bin/fastr_jars/truffle*",
               "bin/fastr_jars/graal-sdk*",
@@ -473,6 +475,8 @@ suite = {
         "COPYRIGHT_FASTR" : "extracted-dependency:fastr:FASTR_RELEASE<rffi>/COPYRIGHT",
         "LICENSE_FASTR" : "extracted-dependency:fastr:FASTR_RELEASE<rffi>/LICENSE",
         "README_FASTR" : "extracted-dependency:fastr:FASTR_RELEASE<rffi>/README.md",
+        "bin/Rscript" : "file:com.oracle.truffle.r.release/src/Rscript_legacy",
+        "bin/exec/R" : "file:com.oracle.truffle.r.release/src/R_legacy",
       },
     }
   },