diff --git a/cpp/Script.cpp b/cpp/Script.cpp
index 54a571a..70754d0 100644
--- a/cpp/Script.cpp
+++ b/cpp/Script.cpp
@@ -23,7 +23,7 @@
 using namespace RSC;
 
 void Script::invoke(uint32_t slot, const void *v, size_t len) const {
-    rsScriptInvokeV(mRS->getContext(), getID(), slot, v, len);
+    RS::dispatch->ScriptInvokeV(mRS->getContext(), getID(), slot, v, len);
 }
 
 void Script::forEach(uint32_t slot, sp<const Allocation> ain, sp<const Allocation> aout,
@@ -33,7 +33,7 @@
     }
     void *in_id = BaseObj::getObjID(ain);
     void *out_id = BaseObj::getObjID(aout);
-    rsScriptForEach(mRS->getContext(), getID(), slot, in_id, out_id, usr, usrLen, NULL, 0);
+    RS::dispatch->ScriptForEach(mRS->getContext(), getID(), slot, in_id, out_id, usr, usrLen, NULL, 0);
 }
 
 
@@ -42,16 +42,16 @@
 
 
 void Script::bindAllocation(sp<Allocation> va, uint32_t slot) const {
-    rsScriptBindAllocation(mRS->getContext(), getID(), BaseObj::getObjID(va), slot);
+    RS::dispatch->ScriptBindAllocation(mRS->getContext(), getID(), BaseObj::getObjID(va), slot);
 }
 
 
 void Script::setVar(uint32_t index, sp<const BaseObj> o) const {
-    rsScriptSetVarObj(mRS->getContext(), getID(), index, (o == NULL) ? 0 : o->getID());
+    RS::dispatch->ScriptSetVarObj(mRS->getContext(), getID(), index, (o == NULL) ? 0 : o->getID());
 }
 
 void Script::setVar(uint32_t index, const void *v, size_t len) const {
-    rsScriptSetVarV(mRS->getContext(), getID(), index, v, len);
+    RS::dispatch->ScriptSetVarV(mRS->getContext(), getID(), index, v, len);
 }
 
 void Script::FieldBase::init(sp<RS> rs, uint32_t dimx, uint32_t usages) {
