diff --git a/driver/rsdRuntimeStubs.cpp b/driver/rsdRuntimeStubs.cpp
index 2f9f410..d8050ac 100644
--- a/driver/rsdRuntimeStubs.cpp
+++ b/driver/rsdRuntimeStubs.cpp
@@ -365,24 +365,49 @@
     return rsrGetAllocation(rsc, sc, ptr);
 }
 
-static void SC_ForEach(Script *target,
-                Allocation *in,
-                Allocation *out,
-                const void *usr,
-                const RsScriptCall *call) {
+static void SC_ForEach_SAA(Script *target,
+                            Allocation *in,
+                            Allocation *out) {
+    GET_TLS();
+    rsrForEach(rsc, sc, target, in, out, NULL, 0, NULL);
+}
+
+static void SC_ForEach_SAAU(Script *target,
+                            Allocation *in,
+                            Allocation *out,
+                            const void *usr) {
     GET_TLS();
     rsrForEach(rsc, sc, target, in, out, usr, 0, NULL);
 }
 
-static void SC_ForEach2(Script *target,
-                 Allocation *in,
-                 Allocation *out,
-                 const void *usr,
-                 const RsScriptCall *call) {
+static void SC_ForEach_SAAUS(Script *target,
+                             Allocation *in,
+                             Allocation *out,
+                             const void *usr,
+                             const RsScriptCall *call) {
     GET_TLS();
     rsrForEach(rsc, sc, target, in, out, usr, 0, call);
 }
 
+static void SC_ForEach_SAAUL(Script *target,
+                             Allocation *in,
+                             Allocation *out,
+                             const void *usr,
+                             uint32_t usrLen) {
+    GET_TLS();
+    rsrForEach(rsc, sc, target, in, out, usr, usrLen, NULL);
+}
+
+static void SC_ForEach_SAAULS(Script *target,
+                              Allocation *in,
+                              Allocation *out,
+                              const void *usr,
+                              uint32_t usrLen,
+                              const RsScriptCall *call) {
+    GET_TLS();
+    rsrForEach(rsc, sc, target, in, out, usr, usrLen, call);
+}
+
 
 
 //////////////////////////////////////////////////////////////////////////////
@@ -648,8 +673,11 @@
     { "_Z19rsgClearDepthTargetv", (void *)&SC_ClearFrameBufferObjectDepthTarget, false },
     { "_Z24rsgClearAllRenderTargetsv", (void *)&SC_ClearFrameBufferObjectTargets, false },
 
-    { "_Z9rsForEach9rs_script13rs_allocationS0_PKv", (void *)&SC_ForEach, false },
-    { "_Z9rsForEach9rs_script13rs_allocationS0_PKvj", (void *)&SC_ForEach2, false },
+    { "_Z9rsForEach9rs_script13rs_allocationS0_", (void *)&SC_ForEach_SAA, false },
+    { "_Z9rsForEach9rs_script13rs_allocationS0_PKv", (void *)&SC_ForEach_SAAU, false },
+    { "_Z9rsForEach9rs_script13rs_allocationS0_PKvPK16rs_script_call_t", (void *)&SC_ForEach_SAAUS, false },
+    { "_Z9rsForEach9rs_script13rs_allocationS0_PKvj", (void *)&SC_ForEach_SAAUL, false },
+    { "_Z9rsForEach9rs_script13rs_allocationS0_PKvjPK16rs_script_call_t", (void *)&SC_ForEach_SAAULS, false },
 
     // time
     { "_Z6rsTimePi", (void *)&SC_Time, true },
diff --git a/scriptc/rs_math.rsh b/scriptc/rs_math.rsh
index f38f72c..fb5c4f6 100644
--- a/scriptc/rs_math.rsh
+++ b/scriptc/rs_math.rsh
@@ -249,15 +249,28 @@
     uint32_t arrayEnd;
 } rs_script_call_t;
 
+#if 1//(RS_VERSION >= 14)
 extern void __attribute__((overloadable))
-    rsForEach(rs_script script, rs_allocation input,
-              rs_allocation output, const void * usrData);
+    rsForEach(rs_script script, rs_allocation input, rs_allocation output);
 
 extern void __attribute__((overloadable))
+    rsForEach(rs_script script, rs_allocation input, rs_allocation output,
+              const void * usrData, size_t usrDataLen);
+
+extern void __attribute__((overloadable))
+    rsForEach(rs_script script, rs_allocation input, rs_allocation output,
+              const void * usrData, size_t usrDataLen, const rs_script_call_t *);
+#else
+extern void __attribute__((overloadable))
     rsForEach(rs_script script, rs_allocation input,
               rs_allocation output, const void * usrData,
               const rs_script_call_t *);
+#endif
 
+// Move me once dependant changes are in.
+extern void __attribute__((overloadable))
+    rsForEach(rs_script script, rs_allocation input,
+              rs_allocation output, const void * usrData);
 
 
 /**
diff --git a/scriptc/rs_types.rsh b/scriptc/rs_types.rsh
index 536d1f0..121e013 100644
--- a/scriptc/rs_types.rsh
+++ b/scriptc/rs_types.rsh
@@ -19,6 +19,9 @@
 typedef uint32_t uint;
 typedef uint64_t ulong;
 
+typedef uint32_t size_t;
+typedef int32_t ssize_t;
+
 typedef struct { const int* const p; } __attribute__((packed, aligned(4))) rs_element;
 typedef struct { const int* const p; } __attribute__((packed, aligned(4))) rs_type;
 typedef struct { const int* const p; } __attribute__((packed, aligned(4))) rs_allocation;
@@ -88,6 +91,8 @@
 
 #define RS_PACKED __attribute__((packed, aligned(4)))
 
+#define NULL ((const void *)0)
+
 typedef enum {
     RS_ALLOCATION_CUBEMAP_FACE_POSITIVE_X = 0,
     RS_ALLOCATION_CUBEMAP_FACE_NEGATIVE_X = 1,
