diff --git a/rsScriptC.cpp b/rsScriptC.cpp
index eaef849..291fca2 100644
--- a/rsScriptC.cpp
+++ b/rsScriptC.cpp
@@ -230,33 +230,13 @@
     }
 }
 
-void ScriptC::runReduce(Context *rsc, uint32_t slot, const Allocation *ain,
+void ScriptC::runReduce(Context *rsc, uint32_t slot,
+                        const Allocation ** ains, size_t inLen,
                         Allocation *aout, const RsScriptCall *sc) {
-    // TODO: Record the name of the kernel in the tracing information.
-    ATRACE_CALL();
-
-    if (slot >= mHal.info.exportedReduceCount) {
-        rsc->setError(RS_ERROR_BAD_SCRIPT, "The simple reduce kernel index is out of bounds");
-        return;
-    }
-    if (mRSC->hadFatalError()) return;
-
-    setupScript(rsc);
-
-    if (rsc->props.mLogScripts) {
-        ALOGV("%p ScriptC::runReduce invoking slot %i, ptr %p", rsc, slot, this);
-    }
-
-    rsc->mHal.funcs.script.invokeReduce(rsc, this, slot, ain, aout, sc);
-}
-
-void ScriptC::runReduceNew(Context *rsc, uint32_t slot,
-                           const Allocation ** ains, size_t inLen,
-                           Allocation *aout, const RsScriptCall *sc) {
   // TODO: Record the name of the kernel in the tracing information.
   ATRACE_CALL();
 
-  if (slot >= mHal.info.exportedReduceNewCount) {
+  if (slot >= mHal.info.exportedReduceCount) {
       rsc->setError(RS_ERROR_BAD_SCRIPT, "The general reduce kernel index is out of bounds");
       return;
   }
@@ -265,10 +245,10 @@
   setupScript(rsc);
 
   if (rsc->props.mLogScripts) {
-      ALOGV("%p ScriptC::runReduceNew invoking slot %i, ptr %p", rsc, slot, this);
+      ALOGV("%p ScriptC::runReduce invoking slot %i, ptr %p", rsc, slot, this);
   }
 
-  rsc->mHal.funcs.script.invokeReduceNew(rsc, this, slot, ains, inLen, aout, sc);
+  rsc->mHal.funcs.script.invokeReduce(rsc, this, slot, ains, inLen, aout, sc);
 }
 
 void ScriptC::Invoke(Context *rsc, uint32_t slot, const void *data, size_t len) {
