diff --git a/com.oracle.truffle.r.engine/src/com/oracle/truffle/r/engine/shell/RCommand.java b/com.oracle.truffle.r.engine/src/com/oracle/truffle/r/engine/shell/RCommand.java
index 60a35920fe752bd1d1c47db79bd5fdd29af4cb5b..3aa57b14a1d3b1f34131d6d651be8c88dde35b8a 100644
--- a/com.oracle.truffle.r.engine/src/com/oracle/truffle/r/engine/shell/RCommand.java
+++ b/com.oracle.truffle.r.engine/src/com/oracle/truffle/r/engine/shell/RCommand.java
@@ -53,8 +53,8 @@ import com.oracle.truffle.r.nodes.builtin.base.Quit;
 import com.oracle.truffle.r.runtime.BrowserQuitException;
 import com.oracle.truffle.r.runtime.RCmdOptions;
 import com.oracle.truffle.r.runtime.RInternalError;
-import com.oracle.truffle.r.runtime.RRuntime;
 import com.oracle.truffle.r.runtime.RInternalSourceDescriptions;
+import com.oracle.truffle.r.runtime.RRuntime;
 import com.oracle.truffle.r.runtime.Utils;
 import com.oracle.truffle.r.runtime.Utils.DebugExitException;
 import com.oracle.truffle.r.runtime.context.ConsoleHandler;
@@ -65,7 +65,6 @@ import com.oracle.truffle.r.runtime.context.Engine.ParseException;
 import com.oracle.truffle.r.runtime.context.RContext;
 import com.oracle.truffle.r.runtime.context.RContext.ContextKind;
 import com.oracle.truffle.r.runtime.data.RLogicalVector;
-import com.oracle.truffle.r.runtime.data.RStringVector;
 
 import jline.console.ConsoleReader;
 import jline.console.UserInterruptException;
@@ -299,7 +298,6 @@ public class RCommand {
     }
 
     private static String getContinuePrompt() {
-        RStringVector continuePrompt = (RStringVector) RRuntime.asAbstractVector(RContext.getInstance().stateROptions.getValue("continue"));
-        return continuePrompt.getDataAt(0);
+        return RRuntime.asString(RRuntime.asAbstractVector(RContext.getInstance().stateROptions.getValue("continue")));
     }
 }
diff --git a/com.oracle.truffle.r.nodes.builtin/src/com/oracle/truffle/r/nodes/builtin/base/Cat.java b/com.oracle.truffle.r.nodes.builtin/src/com/oracle/truffle/r/nodes/builtin/base/Cat.java
index b8d845a5a579a27c58255656d7856a61766516e7..95f0ee80fd18190c0419ed90f3a6de73ddcf8e82 100644
--- a/com.oracle.truffle.r.nodes.builtin/src/com/oracle/truffle/r/nodes/builtin/base/Cat.java
+++ b/com.oracle.truffle.r.nodes.builtin/src/com/oracle/truffle/r/nodes/builtin/base/Cat.java
@@ -102,7 +102,7 @@ public abstract class Cat extends RBuiltinNode {
         checkFillLength(fill);
         int fillWidth = -1;
         if (RRuntime.fromLogical(fill.getDataAt(0))) {
-            fillWidth = ((RIntVector) RContext.getInstance().stateROptions.getValue("width")).getDataAt(0);
+            fillWidth = RRuntime.asInteger(RContext.getInstance().stateROptions.getValue("width"));
         }
         return output(args, conn, sepVec, fillWidth, checkLabels(labels), append);
     }
diff --git a/com.oracle.truffle.r.nodes.builtin/src/com/oracle/truffle/r/nodes/builtin/base/PrettyPrinterNode.java b/com.oracle.truffle.r.nodes.builtin/src/com/oracle/truffle/r/nodes/builtin/base/PrettyPrinterNode.java
index 981eb21454b777062374f1c93d8b5fe301677aae..3e8e95790e874c126b4481a9ebf75de9f6831aab 100644
--- a/com.oracle.truffle.r.nodes.builtin/src/com/oracle/truffle/r/nodes/builtin/base/PrettyPrinterNode.java
+++ b/com.oracle.truffle.r.nodes.builtin/src/com/oracle/truffle/r/nodes/builtin/base/PrettyPrinterNode.java
@@ -471,27 +471,8 @@ public abstract class PrettyPrinterNode extends RNode {
     }
 
     private static int getMaxPrintLength() {
-        int maxPrint = -1; // infinity
-        Object maxPrintObj = RContext.getInstance().stateROptions.getValue("max.print");
-        if (maxPrintObj != null) {
-
-            if (maxPrintObj instanceof Integer) {
-                return (int) maxPrintObj;
-            } else if (maxPrintObj instanceof Double) {
-                return RRuntime.double2int(((double) maxPrintObj));
-            } else if (maxPrintObj instanceof RAbstractVector) {
-                RAbstractVector maxPrintVec = (RAbstractVector) maxPrintObj;
-                if (maxPrintVec.getLength() > 0) {
-                    if (maxPrintObj instanceof RAbstractIntVector) {
-                        maxPrint = ((RAbstractIntVector) maxPrintVec).getDataAt(0);
-                    }
-                    if (maxPrintObj instanceof RAbstractDoubleVector) {
-                        maxPrint = RRuntime.double2int(((RAbstractDoubleVector) maxPrintVec).getDataAt(0));
-                    }
-                }
-            }
-        }
-        return maxPrint;
+        int maxPrint = RRuntime.asInteger(RContext.getInstance().stateROptions.getValue("max.print"));
+        return RRuntime.isNA(maxPrint) ? -1 : maxPrint;
     }
 
     private String printVector(RAbstractVector vector, String[] values, boolean isStringVector, boolean isRawVector) {
diff --git a/com.oracle.truffle.r.nodes.builtin/src/com/oracle/truffle/r/nodes/builtin/base/printer/PrintParameters.java b/com.oracle.truffle.r.nodes.builtin/src/com/oracle/truffle/r/nodes/builtin/base/printer/PrintParameters.java
index a19d481dcc74e990c98b0d6884dd5b7c54f7f8fb..bcd3fdf41db6622e1bed3c2aada118854360e1a6 100644
--- a/com.oracle.truffle.r.nodes.builtin/src/com/oracle/truffle/r/nodes/builtin/base/printer/PrintParameters.java
+++ b/com.oracle.truffle.r.nodes.builtin/src/com/oracle/truffle/r/nodes/builtin/base/printer/PrintParameters.java
@@ -129,7 +129,6 @@ public final class PrintParameters {
     }
 
     public static int getDefaultMaxPrint() {
-        RRuntime.asInteger(RContext.getInstance().stateROptions.getValue("max.print"));
         int max = RRuntime.asInteger(RContext.getInstance().stateROptions.getValue("max.print"));
         if (max == RRuntime.INT_NA || max < 0) {
             max = 99999;
diff --git a/com.oracle.truffle.r.nodes.builtin/src/com/oracle/truffle/r/nodes/builtin/helpers/BrowserInteractNode.java b/com.oracle.truffle.r.nodes.builtin/src/com/oracle/truffle/r/nodes/builtin/helpers/BrowserInteractNode.java
index cbfb84aa0fbfd4c31bff273cdec73584d94342c2..8bc20600a9e4b92b8eb36948cd865dee5a530419 100644
--- a/com.oracle.truffle.r.nodes.builtin/src/com/oracle/truffle/r/nodes/builtin/helpers/BrowserInteractNode.java
+++ b/com.oracle.truffle.r.nodes.builtin/src/com/oracle/truffle/r/nodes/builtin/helpers/BrowserInteractNode.java
@@ -38,7 +38,6 @@ import com.oracle.truffle.r.runtime.context.ConsoleHandler;
 import com.oracle.truffle.r.runtime.context.Engine.ParseException;
 import com.oracle.truffle.r.runtime.context.RContext;
 import com.oracle.truffle.r.runtime.data.RIntVector;
-import com.oracle.truffle.r.runtime.data.RLogicalVector;
 import com.oracle.truffle.r.runtime.data.RNull;
 import com.oracle.truffle.r.runtime.data.RPairList;
 import com.oracle.truffle.r.runtime.data.RStringVector;
@@ -87,8 +86,8 @@ public abstract class BrowserInteractNode extends RNode {
                     input = input.trim();
                 }
                 if (input == null || input.length() == 0) {
-                    RLogicalVector browserNLdisabledVec = (RLogicalVector) RContext.getInstance().stateROptions.getValue("browserNLdisabled");
-                    if (!RRuntime.fromLogical(browserNLdisabledVec.getDataAt(0))) {
+                    byte browserNLdisabledVec = RRuntime.asLogicalObject(RContext.getInstance().stateROptions.getValue("browserNLdisabled"));
+                    if (!RRuntime.fromLogical(browserNLdisabledVec)) {
                         input = lastEmptyLineCommand;
                     }
                 }
diff --git a/com.oracle.truffle.r.runtime/src/com/oracle/truffle/r/runtime/RRuntime.java b/com.oracle.truffle.r.runtime/src/com/oracle/truffle/r/runtime/RRuntime.java
index 9d60e49c9b15a7b223b94bdba45840e14d96a7a0..e568055e0e7c3c70cfe5dc137d89702871104dbf 100644
--- a/com.oracle.truffle.r.runtime/src/com/oracle/truffle/r/runtime/RRuntime.java
+++ b/com.oracle.truffle.r.runtime/src/com/oracle/truffle/r/runtime/RRuntime.java
@@ -24,20 +24,21 @@ import com.oracle.truffle.api.frame.VirtualFrame;
 import com.oracle.truffle.api.interop.TruffleObject;
 import com.oracle.truffle.r.runtime.data.RAttributable;
 import com.oracle.truffle.r.runtime.data.RComplex;
-import com.oracle.truffle.r.runtime.data.RComplexVector;
 import com.oracle.truffle.r.runtime.data.RDataFactory;
 import com.oracle.truffle.r.runtime.data.RDouble;
-import com.oracle.truffle.r.runtime.data.RDoubleVector;
 import com.oracle.truffle.r.runtime.data.RFunction;
-import com.oracle.truffle.r.runtime.data.RIntVector;
 import com.oracle.truffle.r.runtime.data.RInteger;
 import com.oracle.truffle.r.runtime.data.RLogical;
-import com.oracle.truffle.r.runtime.data.RLogicalVector;
 import com.oracle.truffle.r.runtime.data.RRaw;
 import com.oracle.truffle.r.runtime.data.RString;
 import com.oracle.truffle.r.runtime.data.RStringVector;
 import com.oracle.truffle.r.runtime.data.RSymbol;
 import com.oracle.truffle.r.runtime.data.RTypedValue;
+import com.oracle.truffle.r.runtime.data.model.RAbstractComplexVector;
+import com.oracle.truffle.r.runtime.data.model.RAbstractDoubleVector;
+import com.oracle.truffle.r.runtime.data.model.RAbstractIntVector;
+import com.oracle.truffle.r.runtime.data.model.RAbstractLogicalVector;
+import com.oracle.truffle.r.runtime.data.model.RAbstractStringVector;
 import com.oracle.truffle.r.runtime.data.model.RAbstractVector;
 import com.oracle.truffle.r.runtime.env.frame.FrameSlotChangeMonitor;
 
@@ -794,40 +795,40 @@ public class RRuntime {
     }
 
     /**
-     * Java equivalent of GnuR asInteger fur use outside Truffle boundary. TODO support for warnings
+     * Java equivalent of GnuR asLogical for use outside Truffle boundary. TODO support for warnings
+     */
+    public static byte asLogicalObject(Object objArg) {
+        Object obj = asAbstractVector(objArg);
+        if (obj instanceof RAbstractIntVector) {
+            return int2logical(((RAbstractIntVector) obj).getDataAt(0));
+        } else if (obj instanceof RAbstractDoubleVector) {
+            return double2logical(((RAbstractDoubleVector) obj).getDataAt(0));
+        } else if (obj instanceof RAbstractLogicalVector) {
+            return ((RAbstractLogicalVector) obj).getDataAt(0);
+        } else if (obj instanceof RAbstractComplexVector) {
+            return complex2logical(((RAbstractComplexVector) obj).getDataAt(0));
+        } else if (obj instanceof RAbstractStringVector) {
+            return string2logical(((RAbstractStringVector) obj).getDataAt(0));
+        } else {
+            return LOGICAL_NA;
+        }
+    }
+
+    /**
+     * Java equivalent of GnuR asInteger for use outside Truffle boundary. TODO support for warnings
      */
     public static int asInteger(Object objArg) {
         Object obj = asAbstractVector(objArg);
-        if (obj instanceof RIntVector) {
-            int v = ((RIntVector) obj).getDataAt(0);
-            return v;
-        } else if (obj instanceof RDoubleVector) {
-            double d = ((RDoubleVector) obj).getDataAt(0);
-            if (isNAorNaN(d)) {
-                return INT_NA;
-            } else {
-                return (int) d;
-            }
-        } else if (obj instanceof RLogicalVector) {
-            byte v = ((RLogicalVector) obj).getDataAt(0);
-            if (isNA(v)) {
-                return INT_NA;
-            } else {
-                return v;
-            }
-        } else if (obj instanceof RComplexVector) {
-            RComplex v = ((RComplexVector) obj).getDataAt(0);
-            if (isNAorNaN(v.getRealPart()) || isNAorNaN(v.getImaginaryPart())) {
-                return INT_NA;
-            } else {
-                return (int) v.getRealPart();
-            }
-        } else if (obj instanceof RStringVector) {
-            try {
-                return Integer.parseInt(((RStringVector) obj).getDataAt(0));
-            } catch (NumberFormatException ex) {
-                return INT_NA;
-            }
+        if (obj instanceof RAbstractIntVector) {
+            return ((RAbstractIntVector) obj).getDataAt(0);
+        } else if (obj instanceof RAbstractDoubleVector) {
+            return double2int(((RAbstractDoubleVector) obj).getDataAt(0));
+        } else if (obj instanceof RAbstractLogicalVector) {
+            return logical2int(((RAbstractLogicalVector) obj).getDataAt(0));
+        } else if (obj instanceof RAbstractComplexVector) {
+            return complex2int(((RAbstractComplexVector) obj).getDataAt(0));
+        } else if (obj instanceof RAbstractStringVector) {
+            return string2int(((RAbstractStringVector) obj).getDataAt(0));
         } else {
             return INT_NA;
         }