diff --git a/cpp/RenderScript.cpp b/cpp/RenderScript.cpp
index 613d4aa..b542ad6 100644
--- a/cpp/RenderScript.cpp
+++ b/cpp/RenderScript.cpp
@@ -67,6 +67,332 @@
     return RS::init(RS_VERSION, forceCpu, synchronous);
 }
 
+static bool loadSymbols(void* handle) {
+
+    RS::dispatch->AllocationGetType = (AllocationGetTypeFnPtr)dlsym(handle, "rsaAllocationGetType");
+    if (RS::dispatch->AllocationGetType == NULL) {
+        ALOGE("Couldn't initialize RS::dispatch->AllocationGetType");
+        return false;
+    }
+    RS::dispatch->TypeGetNativeData = (TypeGetNativeDataFnPtr)dlsym(handle, "rsaTypeGetNativeData");
+    if (RS::dispatch->TypeGetNativeData == NULL) {
+        ALOGE("Couldn't initialize RS::dispatch->TypeGetNativeData");
+        return false;
+    }
+    RS::dispatch->ElementGetNativeData = (ElementGetNativeDataFnPtr)dlsym(handle, "rsaElementGetNativeData");
+    if (RS::dispatch->ElementGetNativeData == NULL) {
+        ALOGE("Couldn't initialize RS::dispatch->ElementGetNativeData");
+        return false;
+    }
+    RS::dispatch->ElementGetSubElements = (ElementGetSubElementsFnPtr)dlsym(handle, "rsaElementGetSubElements");
+    if (RS::dispatch->ElementGetSubElements == NULL) {
+        ALOGE("Couldn't initialize RS::dispatch->ElementGetSubElements");
+        return false;
+    }
+    RS::dispatch->DeviceCreate = (DeviceCreateFnPtr)dlsym(handle, "rsDeviceCreate");
+    if (RS::dispatch->DeviceCreate == NULL) {
+        ALOGE("Couldn't initialize RS::dispatch->DeviceCreate");
+        return false;
+    }
+    RS::dispatch->DeviceDestroy = (DeviceDestroyFnPtr)dlsym(handle, "rsDeviceDestroy");
+    if (RS::dispatch->DeviceDestroy == NULL) {
+        ALOGE("Couldn't initialize RS::dispatch->DeviceDestroy");
+        return false;
+    }
+    RS::dispatch->DeviceSetConfig = (DeviceSetConfigFnPtr)dlsym(handle, "rsDeviceSetConfig");
+    if (RS::dispatch->DeviceSetConfig == NULL) {
+        ALOGE("Couldn't initialize RS::dispatch->DeviceSetConfig");
+        return false;
+    }
+    RS::dispatch->ContextCreate = (ContextCreateFnPtr)dlsym(handle, "rsContextCreate");;
+    if (RS::dispatch->ContextCreate == NULL) {
+        ALOGE("Couldn't initialize RS::dispatch->ContextCreate");
+        return false;
+    }
+    RS::dispatch->ContextDestroy = (ContextDestroyFnPtr)dlsym(handle, "rsContextDestroy");
+    if (RS::dispatch->ContextDestroy == NULL) {
+        ALOGE("Couldn't initialize RS::dispatch->ContextDestroy");
+        return false;
+    }
+    RS::dispatch->ContextGetMessage = (ContextGetMessageFnPtr)dlsym(handle, "rsContextGetMessage");
+    if (RS::dispatch->ContextGetMessage == NULL) {
+        ALOGE("Couldn't initialize RS::dispatch->ContextGetMessage");
+        return false;
+    }
+    RS::dispatch->ContextPeekMessage = (ContextPeekMessageFnPtr)dlsym(handle, "rsContextPeekMessage");
+    if (RS::dispatch->ContextPeekMessage == NULL) {
+        ALOGE("Couldn't initialize RS::dispatch->ContextPeekMessage");
+        return false;
+    }
+    RS::dispatch->ContextSendMessage = (ContextSendMessageFnPtr)dlsym(handle, "rsContextSendMessage");
+    if (RS::dispatch->ContextSendMessage == NULL) {
+        ALOGE("Couldn't initialize RS::dispatch->ContextSendMessage");
+        return false;
+    }
+    RS::dispatch->ContextInitToClient = (ContextInitToClientFnPtr)dlsym(handle, "rsContextInitToClient");
+    if (RS::dispatch->ContextInitToClient == NULL) {
+        ALOGE("Couldn't initialize RS::dispatch->ContextInitToClient");
+        return false;
+    }
+    RS::dispatch->ContextDeinitToClient = (ContextDeinitToClientFnPtr)dlsym(handle, "rsContextDeinitToClient");
+    if (RS::dispatch->ContextDeinitToClient == NULL) {
+        ALOGE("Couldn't initialize RS::dispatch->ContextDeinitToClient");
+        return false;
+    }
+    RS::dispatch->TypeCreate = (TypeCreateFnPtr)dlsym(handle, "rsTypeCreate");
+    if (RS::dispatch->TypeCreate == NULL) {
+        ALOGE("Couldn't initialize RS::dispatch->TypeCreate");
+        return false;
+    }
+    RS::dispatch->AllocationCreateTyped = (AllocationCreateTypedFnPtr)dlsym(handle, "rsAllocationCreateTyped");
+    if (RS::dispatch->AllocationCreateTyped == NULL) {
+        ALOGE("Couldn't initialize RS::dispatch->AllocationCreateTyped");
+        return false;
+    }
+    RS::dispatch->AllocationCreateFromBitmap = (AllocationCreateFromBitmapFnPtr)dlsym(handle, "rsAllocationCreateFromBitmap");
+    if (RS::dispatch->AllocationCreateFromBitmap == NULL) {
+        ALOGE("Couldn't initialize RS::dispatch->AllocationCreateFromBitmap");
+        return false;
+    }
+    RS::dispatch->AllocationCubeCreateFromBitmap = (AllocationCubeCreateFromBitmapFnPtr)dlsym(handle, "rsAllocationCubeCreateFromBitmap");
+    if (RS::dispatch->AllocationCubeCreateFromBitmap == NULL) {
+        ALOGE("Couldn't initialize RS::dispatch->AllocationCubeCreateFromBitmap");
+        return false;
+    }
+    RS::dispatch->AllocationGetSurface = (AllocationGetSurfaceFnPtr)dlsym(handle, "rsAllocationGetSurface");
+    if (RS::dispatch->AllocationGetSurface == NULL) {
+        ALOGE("Couldn't initialize RS::dispatch->AllocationGetSurface");
+        return false;
+    }
+    RS::dispatch->AllocationSetSurface = (AllocationSetSurfaceFnPtr)dlsym(handle, "rsAllocationSetSurface");
+    if (RS::dispatch->AllocationSetSurface == NULL) {
+        ALOGE("Couldn't initialize RS::dispatch->AllocationSetSurface");
+        return false;
+    }
+    RS::dispatch->ContextFinish = (ContextFinishFnPtr)dlsym(handle, "rsContextFinish");
+    if (RS::dispatch->ContextFinish == NULL) {
+        ALOGE("Couldn't initialize RS::dispatch->ContextFinish");
+        return false;
+    }
+    RS::dispatch->ContextDump = (ContextDumpFnPtr)dlsym(handle, "rsContextDump");
+    if (RS::dispatch->ContextDump == NULL) {
+        ALOGE("Couldn't initialize RS::dispatch->ContextDump");
+        return false;
+    }
+    RS::dispatch->ContextSetPriority = (ContextSetPriorityFnPtr)dlsym(handle, "rsContextSetPriority");
+    if (RS::dispatch->ContextSetPriority == NULL) {
+        ALOGE("Couldn't initialize RS::dispatch->ContextSetPriority");
+        return false;
+    }
+    RS::dispatch->AssignName = (AssignNameFnPtr)dlsym(handle, "rsAssignName");
+    if (RS::dispatch->AssignName == NULL) {
+        ALOGE("Couldn't initialize RS::dispatch->AssignName");
+        return false;
+    }
+    RS::dispatch->ObjDestroy = (ObjDestroyFnPtr)dlsym(handle, "rsObjDestroy");
+    if (RS::dispatch->ObjDestroy == NULL) {
+        ALOGE("Couldn't initialize RS::dispatch->ObjDestroy");
+        return false;
+    }
+    RS::dispatch->ElementCreate = (ElementCreateFnPtr)dlsym(handle, "rsElementCreate");
+    if (RS::dispatch->ElementCreate == NULL) {
+        ALOGE("Couldn't initialize RS::dispatch->ElementCreate");
+        return false;
+    }
+    RS::dispatch->ElementCreate2 = (ElementCreate2FnPtr)dlsym(handle, "rsElementCreate2");
+    if (RS::dispatch->ElementCreate2 == NULL) {
+        ALOGE("Couldn't initialize RS::dispatch->ElementCreate2");
+        return false;
+    }
+    RS::dispatch->AllocationCopyToBitmap = (AllocationCopyToBitmapFnPtr)dlsym(handle, "rsAllocationCopyToBitmap");
+    if (RS::dispatch->AllocationCopyToBitmap == NULL) {
+        ALOGE("Couldn't initialize RS::dispatch->AllocationCopyToBitmap");
+        return false;
+    }
+    RS::dispatch->Allocation1DData = (Allocation1DDataFnPtr)dlsym(handle, "rsAllocation1DData");
+    if (RS::dispatch->Allocation1DData == NULL) {
+        ALOGE("Couldn't initialize RS::dispatch->Allocation1DData");
+        return false;
+    }
+    RS::dispatch->Allocation1DElementData = (Allocation1DElementDataFnPtr)dlsym(handle, "rsAllocation1DElementData");
+    if (RS::dispatch->Allocation1DElementData == NULL) {
+        ALOGE("Couldn't initialize RS::dispatch->Allocation1DElementData");
+        return false;
+    }
+    RS::dispatch->Allocation2DData = (Allocation2DDataFnPtr)dlsym(handle, "rsAllocation2DData");
+    if (RS::dispatch->Allocation2DData == NULL) {
+        ALOGE("Couldn't initialize RS::dispatch->Allocation2DData");
+        return false;
+    }
+    RS::dispatch->Allocation3DData = (Allocation3DDataFnPtr)dlsym(handle, "rsAllocation3DData");
+    if (RS::dispatch->Allocation3DData == NULL) {
+        ALOGE("Couldn't initialize RS::dispatch->Allocation3DData");
+        return false;
+    }
+    RS::dispatch->AllocationGenerateMipmaps = (AllocationGenerateMipmapsFnPtr)dlsym(handle, "rsAllocationGenerateMipmaps");
+    if (RS::dispatch->AllocationGenerateMipmaps == NULL) {
+        ALOGE("Couldn't initialize RS::dispatch->AllocationGenerateMipmaps");
+        return false;
+    }
+    RS::dispatch->AllocationRead = (AllocationReadFnPtr)dlsym(handle, "rsAllocationRead");
+    if (RS::dispatch->AllocationRead == NULL) {
+        ALOGE("Couldn't initialize RS::dispatch->AllocationRead");
+        return false;
+    }
+    RS::dispatch->Allocation1DRead = (Allocation1DReadFnPtr)dlsym(handle, "rsAllocation1DRead");
+    if (RS::dispatch->Allocation1DRead == NULL) {
+        ALOGE("Couldn't initialize RS::dispatch->Allocation1DRead");
+        return false;
+    }
+    RS::dispatch->Allocation2DRead = (Allocation2DReadFnPtr)dlsym(handle, "rsAllocation2DRead");
+    if (RS::dispatch->Allocation2DRead == NULL) {
+        ALOGE("Couldn't initialize RS::dispatch->Allocation2DRead");
+        return false;
+    }
+    RS::dispatch->AllocationSyncAll = (AllocationSyncAllFnPtr)dlsym(handle, "rsAllocationSyncAll");
+    if (RS::dispatch->AllocationSyncAll == NULL) {
+        ALOGE("Couldn't initialize RS::dispatch->AllocationSyncAll");
+        return false;
+    }
+    RS::dispatch->AllocationResize1D = (AllocationResize1DFnPtr)dlsym(handle, "rsAllocationResize1D");
+    if (RS::dispatch->AllocationResize1D == NULL) {
+        ALOGE("Couldn't initialize RS::dispatch->AllocationResize1D");
+        return false;
+    }
+    RS::dispatch->AllocationCopy2DRange = (AllocationCopy2DRangeFnPtr)dlsym(handle, "rsAllocationCopy2DRange");
+    if (RS::dispatch->AllocationCopy2DRange == NULL) {
+        ALOGE("Couldn't initialize RS::dispatch->AllocationCopy2DRange");
+        return false;
+    }
+    RS::dispatch->AllocationCopy3DRange = (AllocationCopy3DRangeFnPtr)dlsym(handle, "rsAllocationCopy3DRange");
+    if (RS::dispatch->AllocationCopy3DRange == NULL) {
+        ALOGE("Couldn't initialize RS::dispatch->AllocationCopy3DRange");
+        return false;
+    }
+    RS::dispatch->SamplerCreate = (SamplerCreateFnPtr)dlsym(handle, "rsSamplerCreate");
+    if (RS::dispatch->SamplerCreate == NULL) {
+        ALOGE("Couldn't initialize RS::dispatch->SamplerCreate");
+        return false;
+    }
+    RS::dispatch->ScriptBindAllocation = (ScriptBindAllocationFnPtr)dlsym(handle, "rsScriptBindAllocation");
+    if (RS::dispatch->ScriptBindAllocation == NULL) {
+        ALOGE("Couldn't initialize RS::dispatch->ScriptBindAllocation");
+        return false;
+    }
+    RS::dispatch->ScriptSetTimeZone = (ScriptSetTimeZoneFnPtr)dlsym(handle, "rsScriptSetTimeZone");
+    if (RS::dispatch->ScriptSetTimeZone == NULL) {
+        ALOGE("Couldn't initialize RS::dispatch->ScriptSetTimeZone");
+        return false;
+    }
+    RS::dispatch->ScriptInvoke = (ScriptInvokeFnPtr)dlsym(handle, "rsScriptInvoke");
+    if (RS::dispatch->ScriptInvoke == NULL) {
+        ALOGE("Couldn't initialize RS::dispatch->ScriptInvoke");
+        return false;
+    }
+    RS::dispatch->ScriptInvokeV = (ScriptInvokeVFnPtr)dlsym(handle, "rsScriptInvokeV");
+    if (RS::dispatch->ScriptInvokeV == NULL) {
+        ALOGE("Couldn't initialize RS::dispatch->ScriptInvokeV");
+        return false;
+    }
+    RS::dispatch->ScriptForEach = (ScriptForEachFnPtr)dlsym(handle, "rsScriptForEach");
+    if (RS::dispatch->ScriptForEach == NULL) {
+        ALOGE("Couldn't initialize RS::dispatch->ScriptForEach");
+        return false;
+    }
+    RS::dispatch->ScriptSetVarI = (ScriptSetVarIFnPtr)dlsym(handle, "rsScriptSetVarI");
+    if (RS::dispatch->ScriptSetVarI == NULL) {
+        ALOGE("Couldn't initialize RS::dispatch->ScriptSetVarI");
+        return false;
+    }
+    RS::dispatch->ScriptSetVarObj = (ScriptSetVarObjFnPtr)dlsym(handle, "rsScriptSetVarObj");
+    if (RS::dispatch->ScriptSetVarObj == NULL) {
+        ALOGE("Couldn't initialize RS::dispatch->ScriptSetVarObj");
+        return false;
+    }
+    RS::dispatch->ScriptSetVarJ = (ScriptSetVarJFnPtr)dlsym(handle, "rsScriptSetVarJ");
+    if (RS::dispatch->ScriptSetVarJ == NULL) {
+        ALOGE("Couldn't initialize RS::dispatch->ScriptSetVarJ");
+        return false;
+    }
+    RS::dispatch->ScriptSetVarF = (ScriptSetVarFFnPtr)dlsym(handle, "rsScriptSetVarF");
+    if (RS::dispatch->ScriptSetVarF == NULL) {
+        ALOGE("Couldn't initialize RS::dispatch->ScriptSetVarF");
+        return false;
+    }
+    RS::dispatch->ScriptSetVarD = (ScriptSetVarDFnPtr)dlsym(handle, "rsScriptSetVarD");
+    if (RS::dispatch->ScriptSetVarD == NULL) {
+        ALOGE("Couldn't initialize RS::dispatch->ScriptSetVarD");
+        return false;
+    }
+    RS::dispatch->ScriptSetVarV = (ScriptSetVarVFnPtr)dlsym(handle, "rsScriptSetVarV");
+    if (RS::dispatch->ScriptSetVarV == NULL) {
+        ALOGE("Couldn't initialize RS::dispatch->ScriptSetVarV");
+        return false;
+    }
+    RS::dispatch->ScriptGetVarV = (ScriptGetVarVFnPtr)dlsym(handle, "rsScriptGetVarV");
+    if (RS::dispatch->ScriptGetVarV == NULL) {
+        ALOGE("Couldn't initialize RS::dispatch->ScriptGetVarV");
+        return false;
+    }
+    RS::dispatch->ScriptSetVarVE = (ScriptSetVarVEFnPtr)dlsym(handle, "rsScriptSetVarVE");
+    if (RS::dispatch->ScriptSetVarVE == NULL) {
+        ALOGE("Couldn't initialize RS::dispatch->ScriptSetVarVE");
+        return false;
+    }
+    RS::dispatch->ScriptCCreate = (ScriptCCreateFnPtr)dlsym(handle, "rsScriptCCreate");
+    if (RS::dispatch->ScriptCCreate == NULL) {
+        ALOGE("Couldn't initialize RS::dispatch->ScriptCCreate");
+        return false;
+    }
+    RS::dispatch->ScriptIntrinsicCreate = (ScriptIntrinsicCreateFnPtr)dlsym(handle, "rsScriptIntrinsicCreate");
+    if (RS::dispatch->ScriptIntrinsicCreate == NULL) {
+        ALOGE("Couldn't initialize RS::dispatch->ScriptIntrinsicCreate");
+        return false;
+    }
+    RS::dispatch->ScriptKernelIDCreate = (ScriptKernelIDCreateFnPtr)dlsym(handle, "rsScriptKernelIDCreate");
+    if (RS::dispatch->ScriptKernelIDCreate == NULL) {
+        ALOGE("Couldn't initialize RS::dispatch->ScriptKernelIDCreate");
+        return false;
+    }
+    RS::dispatch->ScriptFieldIDCreate = (ScriptFieldIDCreateFnPtr)dlsym(handle, "rsScriptFieldIDCreate");
+    if (RS::dispatch->ScriptFieldIDCreate == NULL) {
+        ALOGE("Couldn't initialize RS::dispatch->ScriptFieldIDCreate");
+        return false;
+    }
+    RS::dispatch->ScriptGroupCreate = (ScriptGroupCreateFnPtr)dlsym(handle, "rsScriptGroupCreate");
+    if (RS::dispatch->ScriptGroupCreate == NULL) {
+        ALOGE("Couldn't initialize RS::dispatch->ScriptGroupCreate");
+        return false;
+    }
+    RS::dispatch->ScriptGroupSetOutput = (ScriptGroupSetOutputFnPtr)dlsym(handle, "rsScriptGroupSetOutput");
+    if (RS::dispatch->ScriptGroupSetOutput == NULL) {
+        ALOGE("Couldn't initialize RS::dispatch->ScriptGroupSetOutput");
+        return false;
+    }
+    RS::dispatch->ScriptGroupSetInput = (ScriptGroupSetInputFnPtr)dlsym(handle, "rsScriptGroupSetInput");
+    if (RS::dispatch->ScriptGroupSetInput == NULL) {
+        ALOGE("Couldn't initialize RS::dispatch->ScriptGroupSetInput");
+        return false;
+    }
+    RS::dispatch->ScriptGroupExecute = (ScriptGroupExecuteFnPtr)dlsym(handle, "rsScriptGroupExecute");
+    if (RS::dispatch->ScriptGroupExecute == NULL) {
+        ALOGE("Couldn't initialize RS::dispatch->ScriptGroupExecute");
+        return false;
+    }
+    RS::dispatch->AllocationIoSend = (AllocationIoSendFnPtr)dlsym(handle, "rsAllocationIoSend");
+    if (RS::dispatch->AllocationIoSend == NULL) {
+        ALOGE("Couldn't initialize RS::dispatch->AllocationIoSend");
+        return false;
+    }
+    RS::dispatch->AllocationIoReceive = (AllocationIoReceiveFnPtr)dlsym(handle, "rsAllocationIoReceive");
+    if (RS::dispatch->AllocationIoReceive == NULL) {
+        ALOGE("Couldn't initialize RS::dispatch->AllocationIoReceive");
+        return false;
+    }
+
+    return true;
+}
+
 bool RS::initDispatch(int targetApi) {
 
     pthread_mutex_lock(&gInitMutex);
@@ -84,326 +410,7 @@
     ALOGE("libRS initialized successfully");
 
     RS::dispatch = new dispatchTable;
-
-
-    RS::dispatch->AllocationGetType = (AllocationGetTypeFnPtr)dlsym(RS::librs, "rsaAllocationGetType");
-    if (RS::dispatch->AllocationGetType == NULL) {
-        ALOGE("Couldn't initialize RS::dispatch->AllocationGetType");
-        goto error;
-    }
-    RS::dispatch->TypeGetNativeData = (TypeGetNativeDataFnPtr)dlsym(RS::librs, "rsaTypeGetNativeData");
-    if (RS::dispatch->TypeGetNativeData == NULL) {
-        ALOGE("Couldn't initialize RS::dispatch->TypeGetNativeData");
-        goto error;
-    }
-    RS::dispatch->ElementGetNativeData = (ElementGetNativeDataFnPtr)dlsym(RS::librs, "rsaElementGetNativeData");
-    if (RS::dispatch->ElementGetNativeData == NULL) {
-        ALOGE("Couldn't initialize RS::dispatch->ElementGetNativeData");
-        goto error;
-    }
-    RS::dispatch->ElementGetSubElements = (ElementGetSubElementsFnPtr)dlsym(RS::librs, "rsaElementGetSubElements");
-    if (RS::dispatch->ElementGetSubElements == NULL) {
-        ALOGE("Couldn't initialize RS::dispatch->ElementGetSubElements");
-        goto error;
-    }
-    RS::dispatch->DeviceCreate = (DeviceCreateFnPtr)dlsym(RS::librs, "rsDeviceCreate");
-    if (RS::dispatch->DeviceCreate == NULL) {
-        ALOGE("Couldn't initialize RS::dispatch->DeviceCreate");
-        goto error;
-    }
-    RS::dispatch->DeviceDestroy = (DeviceDestroyFnPtr)dlsym(RS::librs, "rsDeviceDestroy");
-    if (RS::dispatch->DeviceDestroy == NULL) {
-        ALOGE("Couldn't initialize RS::dispatch->DeviceDestroy");
-        goto error;
-    }
-    RS::dispatch->DeviceSetConfig = (DeviceSetConfigFnPtr)dlsym(RS::librs, "rsDeviceSetConfig");
-    if (RS::dispatch->DeviceSetConfig == NULL) {
-        ALOGE("Couldn't initialize RS::dispatch->DeviceSetConfig");
-        goto error;
-    }
-    RS::dispatch->ContextCreate = (ContextCreateFnPtr)dlsym(RS::librs, "rsContextCreate");;
-    if (RS::dispatch->ContextCreate == NULL) {
-        ALOGE("Couldn't initialize RS::dispatch->ContextCreate");
-        goto error;
-    }
-    RS::dispatch->ContextDestroy = (ContextDestroyFnPtr)dlsym(RS::librs, "rsContextDestroy");
-    if (RS::dispatch->ContextDestroy == NULL) {
-        ALOGE("Couldn't initialize RS::dispatch->ContextDestroy");
-        goto error;
-    }
-    RS::dispatch->ContextGetMessage = (ContextGetMessageFnPtr)dlsym(RS::librs, "rsContextGetMessage");
-    if (RS::dispatch->ContextGetMessage == NULL) {
-        ALOGE("Couldn't initialize RS::dispatch->ContextGetMessage");
-        goto error;
-    }
-    RS::dispatch->ContextPeekMessage = (ContextPeekMessageFnPtr)dlsym(RS::librs, "rsContextPeekMessage");
-    if (RS::dispatch->ContextPeekMessage == NULL) {
-        ALOGE("Couldn't initialize RS::dispatch->ContextPeekMessage");
-        goto error;
-    }
-    RS::dispatch->ContextSendMessage = (ContextSendMessageFnPtr)dlsym(RS::librs, "rsContextSendMessage");
-    if (RS::dispatch->ContextSendMessage == NULL) {
-        ALOGE("Couldn't initialize RS::dispatch->ContextSendMessage");
-        goto error;
-    }
-    RS::dispatch->ContextInitToClient = (ContextInitToClientFnPtr)dlsym(RS::librs, "rsContextInitToClient");
-    if (RS::dispatch->ContextInitToClient == NULL) {
-        ALOGE("Couldn't initialize RS::dispatch->ContextInitToClient");
-        goto error;
-    }
-    RS::dispatch->ContextDeinitToClient = (ContextDeinitToClientFnPtr)dlsym(RS::librs, "rsContextDeinitToClient");
-    if (RS::dispatch->ContextDeinitToClient == NULL) {
-        ALOGE("Couldn't initialize RS::dispatch->ContextDeinitToClient");
-        goto error;
-    }
-    RS::dispatch->TypeCreate = (TypeCreateFnPtr)dlsym(RS::librs, "rsTypeCreate");
-    if (RS::dispatch->TypeCreate == NULL) {
-        ALOGE("Couldn't initialize RS::dispatch->TypeCreate");
-        goto error;
-    }
-    RS::dispatch->AllocationCreateTyped = (AllocationCreateTypedFnPtr)dlsym(RS::librs, "rsAllocationCreateTyped");
-    if (RS::dispatch->AllocationCreateTyped == NULL) {
-        ALOGE("Couldn't initialize RS::dispatch->AllocationCreateTyped");
-        goto error;
-    }
-    RS::dispatch->AllocationCreateFromBitmap = (AllocationCreateFromBitmapFnPtr)dlsym(RS::librs, "rsAllocationCreateFromBitmap");
-    if (RS::dispatch->AllocationCreateFromBitmap == NULL) {
-        ALOGE("Couldn't initialize RS::dispatch->AllocationCreateFromBitmap");
-        goto error;
-    }
-    RS::dispatch->AllocationCubeCreateFromBitmap = (AllocationCubeCreateFromBitmapFnPtr)dlsym(RS::librs, "rsAllocationCubeCreateFromBitmap");
-    if (RS::dispatch->AllocationCubeCreateFromBitmap == NULL) {
-        ALOGE("Couldn't initialize RS::dispatch->AllocationCubeCreateFromBitmap");
-        goto error;
-    }
-    RS::dispatch->AllocationGetSurface = (AllocationGetSurfaceFnPtr)dlsym(RS::librs, "rsAllocationGetSurface");
-    if (RS::dispatch->AllocationGetSurface == NULL) {
-        ALOGE("Couldn't initialize RS::dispatch->AllocationGetSurface");
-        goto error;
-    }
-    RS::dispatch->AllocationSetSurface = (AllocationSetSurfaceFnPtr)dlsym(RS::librs, "rsAllocationSetSurface");
-    if (RS::dispatch->AllocationSetSurface == NULL) {
-        ALOGE("Couldn't initialize RS::dispatch->AllocationSetSurface");
-        goto error;
-    }
-    RS::dispatch->ContextFinish = (ContextFinishFnPtr)dlsym(RS::librs, "rsContextFinish");
-    if (RS::dispatch->ContextFinish == NULL) {
-        ALOGE("Couldn't initialize RS::dispatch->ContextFinish");
-        goto error;
-    }
-    RS::dispatch->ContextDump = (ContextDumpFnPtr)dlsym(RS::librs, "rsContextDump");
-    if (RS::dispatch->ContextDump == NULL) {
-        ALOGE("Couldn't initialize RS::dispatch->ContextDump");
-        goto error;
-    }
-    RS::dispatch->ContextSetPriority = (ContextSetPriorityFnPtr)dlsym(RS::librs, "rsContextSetPriority");
-    if (RS::dispatch->ContextSetPriority == NULL) {
-        ALOGE("Couldn't initialize RS::dispatch->ContextSetPriority");
-        goto error;
-    }
-    RS::dispatch->AssignName = (AssignNameFnPtr)dlsym(RS::librs, "rsAssignName");
-    if (RS::dispatch->AssignName == NULL) {
-        ALOGE("Couldn't initialize RS::dispatch->AssignName");
-        goto error;
-    }
-    RS::dispatch->ObjDestroy = (ObjDestroyFnPtr)dlsym(RS::librs, "rsObjDestroy");
-    if (RS::dispatch->ObjDestroy == NULL) {
-        ALOGE("Couldn't initialize RS::dispatch->ObjDestroy");
-        goto error;
-    }
-    RS::dispatch->ElementCreate = (ElementCreateFnPtr)dlsym(RS::librs, "rsElementCreate");
-    if (RS::dispatch->ElementCreate == NULL) {
-        ALOGE("Couldn't initialize RS::dispatch->ElementCreate");
-        goto error;
-    }
-    RS::dispatch->ElementCreate2 = (ElementCreate2FnPtr)dlsym(RS::librs, "rsElementCreate2");
-    if (RS::dispatch->ElementCreate2 == NULL) {
-        ALOGE("Couldn't initialize RS::dispatch->ElementCreate2");
-        goto error;
-    }
-    RS::dispatch->AllocationCopyToBitmap = (AllocationCopyToBitmapFnPtr)dlsym(RS::librs, "rsAllocationCopyToBitmap");
-    if (RS::dispatch->AllocationCopyToBitmap == NULL) {
-        ALOGE("Couldn't initialize RS::dispatch->AllocationCopyToBitmap");
-        goto error;
-    }
-    RS::dispatch->Allocation1DData = (Allocation1DDataFnPtr)dlsym(RS::librs, "rsAllocation1DData");
-    if (RS::dispatch->Allocation1DData == NULL) {
-        ALOGE("Couldn't initialize RS::dispatch->Allocation1DData");
-        goto error;
-    }
-    RS::dispatch->Allocation1DElementData = (Allocation1DElementDataFnPtr)dlsym(RS::librs, "rsAllocation1DElementData");
-    if (RS::dispatch->Allocation1DElementData == NULL) {
-        ALOGE("Couldn't initialize RS::dispatch->Allocation1DElementData");
-        goto error;
-    }
-    RS::dispatch->Allocation2DData = (Allocation2DDataFnPtr)dlsym(RS::librs, "rsAllocation2DData");
-    if (RS::dispatch->Allocation2DData == NULL) {
-        ALOGE("Couldn't initialize RS::dispatch->Allocation2DData");
-        goto error;
-    }
-    RS::dispatch->Allocation3DData = (Allocation3DDataFnPtr)dlsym(RS::librs, "rsAllocation3DData");
-    if (RS::dispatch->Allocation3DData == NULL) {
-        ALOGE("Couldn't initialize RS::dispatch->Allocation3DData");
-        goto error;
-    }
-    RS::dispatch->AllocationGenerateMipmaps = (AllocationGenerateMipmapsFnPtr)dlsym(RS::librs, "rsAllocationGenerateMipmaps");
-    if (RS::dispatch->AllocationGenerateMipmaps == NULL) {
-        ALOGE("Couldn't initialize RS::dispatch->AllocationGenerateMipmaps");
-        goto error;
-    }
-    RS::dispatch->AllocationRead = (AllocationReadFnPtr)dlsym(RS::librs, "rsAllocationRead");
-    if (RS::dispatch->AllocationRead == NULL) {
-        ALOGE("Couldn't initialize RS::dispatch->AllocationRead");
-        goto error;
-    }
-    RS::dispatch->Allocation1DRead = (Allocation1DReadFnPtr)dlsym(RS::librs, "rsAllocation1DRead");
-    if (RS::dispatch->Allocation1DRead == NULL) {
-        ALOGE("Couldn't initialize RS::dispatch->Allocation1DRead");
-        goto error;
-    }
-    RS::dispatch->Allocation2DRead = (Allocation2DReadFnPtr)dlsym(RS::librs, "rsAllocation2DRead");
-    if (RS::dispatch->Allocation2DRead == NULL) {
-        ALOGE("Couldn't initialize RS::dispatch->Allocation2DRead");
-        goto error;
-    }
-    RS::dispatch->AllocationSyncAll = (AllocationSyncAllFnPtr)dlsym(RS::librs, "rsAllocationSyncAll");
-    if (RS::dispatch->AllocationSyncAll == NULL) {
-        ALOGE("Couldn't initialize RS::dispatch->AllocationSyncAll");
-        goto error;
-    }
-    RS::dispatch->AllocationResize1D = (AllocationResize1DFnPtr)dlsym(RS::librs, "rsAllocationResize1D");
-    if (RS::dispatch->AllocationResize1D == NULL) {
-        ALOGE("Couldn't initialize RS::dispatch->AllocationResize1D");
-        goto error;
-    }
-    RS::dispatch->AllocationCopy2DRange = (AllocationCopy2DRangeFnPtr)dlsym(RS::librs, "rsAllocationCopy2DRange");
-    if (RS::dispatch->AllocationCopy2DRange == NULL) {
-        ALOGE("Couldn't initialize RS::dispatch->AllocationCopy2DRange");
-        goto error;
-    }
-    RS::dispatch->AllocationCopy3DRange = (AllocationCopy3DRangeFnPtr)dlsym(RS::librs, "rsAllocationCopy3DRange");
-    if (RS::dispatch->AllocationCopy3DRange == NULL) {
-        ALOGE("Couldn't initialize RS::dispatch->AllocationCopy3DRange");
-        goto error;
-    }
-    RS::dispatch->SamplerCreate = (SamplerCreateFnPtr)dlsym(RS::librs, "rsSamplerCreate");
-    if (RS::dispatch->SamplerCreate == NULL) {
-        ALOGE("Couldn't initialize RS::dispatch->SamplerCreate");
-        goto error;
-    }
-    RS::dispatch->ScriptBindAllocation = (ScriptBindAllocationFnPtr)dlsym(RS::librs, "rsScriptBindAllocation");
-    if (RS::dispatch->ScriptBindAllocation == NULL) {
-        ALOGE("Couldn't initialize RS::dispatch->ScriptBindAllocation");
-        goto error;
-    }
-    RS::dispatch->ScriptSetTimeZone = (ScriptSetTimeZoneFnPtr)dlsym(RS::librs, "rsScriptSetTimeZone");
-    if (RS::dispatch->ScriptSetTimeZone == NULL) {
-        ALOGE("Couldn't initialize RS::dispatch->ScriptSetTimeZone");
-        goto error;
-    }
-    RS::dispatch->ScriptInvoke = (ScriptInvokeFnPtr)dlsym(RS::librs, "rsScriptInvoke");
-    if (RS::dispatch->ScriptInvoke == NULL) {
-        ALOGE("Couldn't initialize RS::dispatch->ScriptInvoke");
-        goto error;
-    }
-    RS::dispatch->ScriptInvokeV = (ScriptInvokeVFnPtr)dlsym(RS::librs, "rsScriptInvokeV");
-    if (RS::dispatch->ScriptInvokeV == NULL) {
-        ALOGE("Couldn't initialize RS::dispatch->ScriptInvokeV");
-        goto error;
-    }
-    RS::dispatch->ScriptForEach = (ScriptForEachFnPtr)dlsym(RS::librs, "rsScriptForEach");
-    if (RS::dispatch->ScriptForEach == NULL) {
-        ALOGE("Couldn't initialize RS::dispatch->ScriptForEach");
-        goto error;
-    }
-    RS::dispatch->ScriptSetVarI = (ScriptSetVarIFnPtr)dlsym(RS::librs, "rsScriptSetVarI");
-    if (RS::dispatch->ScriptSetVarI == NULL) {
-        ALOGE("Couldn't initialize RS::dispatch->ScriptSetVarI");
-        goto error;
-    }
-    RS::dispatch->ScriptSetVarObj = (ScriptSetVarObjFnPtr)dlsym(RS::librs, "rsScriptSetVarObj");
-    if (RS::dispatch->ScriptSetVarObj == NULL) {
-        ALOGE("Couldn't initialize RS::dispatch->ScriptSetVarObj");
-        goto error;
-    }
-    RS::dispatch->ScriptSetVarJ = (ScriptSetVarJFnPtr)dlsym(RS::librs, "rsScriptSetVarJ");
-    if (RS::dispatch->ScriptSetVarJ == NULL) {
-        ALOGE("Couldn't initialize RS::dispatch->ScriptSetVarJ");
-        goto error;
-    }
-    RS::dispatch->ScriptSetVarF = (ScriptSetVarFFnPtr)dlsym(RS::librs, "rsScriptSetVarF");
-    if (RS::dispatch->ScriptSetVarF == NULL) {
-        ALOGE("Couldn't initialize RS::dispatch->ScriptSetVarF");
-        goto error;
-    }
-    RS::dispatch->ScriptSetVarD = (ScriptSetVarDFnPtr)dlsym(RS::librs, "rsScriptSetVarD");
-    if (RS::dispatch->ScriptSetVarD == NULL) {
-        ALOGE("Couldn't initialize RS::dispatch->ScriptSetVarD");
-        goto error;
-    }
-    RS::dispatch->ScriptSetVarV = (ScriptSetVarVFnPtr)dlsym(RS::librs, "rsScriptSetVarV");
-    if (RS::dispatch->ScriptSetVarV == NULL) {
-        ALOGE("Couldn't initialize RS::dispatch->ScriptSetVarV");
-        goto error;
-    }
-    RS::dispatch->ScriptGetVarV = (ScriptGetVarVFnPtr)dlsym(RS::librs, "rsScriptGetVarV");
-    if (RS::dispatch->ScriptGetVarV == NULL) {
-        ALOGE("Couldn't initialize RS::dispatch->ScriptGetVarV");
-        goto error;
-    }
-    RS::dispatch->ScriptSetVarVE = (ScriptSetVarVEFnPtr)dlsym(RS::librs, "rsScriptSetVarVE");
-    if (RS::dispatch->ScriptSetVarVE == NULL) {
-        ALOGE("Couldn't initialize RS::dispatch->ScriptSetVarVE");
-        goto error;
-    }
-    RS::dispatch->ScriptCCreate = (ScriptCCreateFnPtr)dlsym(RS::librs, "rsScriptCCreate");
-    if (RS::dispatch->ScriptCCreate == NULL) {
-        ALOGE("Couldn't initialize RS::dispatch->ScriptCCreate");
-        goto error;
-    }
-    RS::dispatch->ScriptIntrinsicCreate = (ScriptIntrinsicCreateFnPtr)dlsym(RS::librs, "rsScriptIntrinsicCreate");
-    if (RS::dispatch->ScriptIntrinsicCreate == NULL) {
-        ALOGE("Couldn't initialize RS::dispatch->ScriptIntrinsicCreate");
-        goto error;
-    }
-    RS::dispatch->ScriptKernelIDCreate = (ScriptKernelIDCreateFnPtr)dlsym(RS::librs, "rsScriptKernelIDCreate");
-    if (RS::dispatch->ScriptKernelIDCreate == NULL) {
-        ALOGE("Couldn't initialize RS::dispatch->ScriptKernelIDCreate");
-        goto error;
-    }
-    RS::dispatch->ScriptFieldIDCreate = (ScriptFieldIDCreateFnPtr)dlsym(RS::librs, "rsScriptFieldIDCreate");
-    if (RS::dispatch->ScriptFieldIDCreate == NULL) {
-        ALOGE("Couldn't initialize RS::dispatch->ScriptFieldIDCreate");
-        goto error;
-    }
-    RS::dispatch->ScriptGroupCreate = (ScriptGroupCreateFnPtr)dlsym(RS::librs, "rsScriptGroupCreate");
-    if (RS::dispatch->ScriptGroupCreate == NULL) {
-        ALOGE("Couldn't initialize RS::dispatch->ScriptGroupCreate");
-        goto error;
-    }
-    RS::dispatch->ScriptGroupSetOutput = (ScriptGroupSetOutputFnPtr)dlsym(RS::librs, "rsScriptGroupSetOutput");
-    if (RS::dispatch->ScriptGroupSetOutput == NULL) {
-        ALOGE("Couldn't initialize RS::dispatch->ScriptGroupSetOutput");
-        goto error;
-    }
-    RS::dispatch->ScriptGroupSetInput = (ScriptGroupSetInputFnPtr)dlsym(RS::librs, "rsScriptGroupSetInput");
-    if (RS::dispatch->ScriptGroupSetInput == NULL) {
-        ALOGE("Couldn't initialize RS::dispatch->ScriptGroupSetInput");
-        goto error;
-    }
-    RS::dispatch->ScriptGroupExecute = (ScriptGroupExecuteFnPtr)dlsym(RS::librs, "rsScriptGroupExecute");
-    if (RS::dispatch->ScriptGroupExecute == NULL) {
-        ALOGE("Couldn't initialize RS::dispatch->ScriptGroupExecute");
-        goto error;
-    }
-    RS::dispatch->AllocationIoSend = (AllocationIoSendFnPtr)dlsym(RS::librs, "rsAllocationIoSend");
-    if (RS::dispatch->AllocationIoSend == NULL) {
-        ALOGE("Couldn't initialize RS::dispatch->AllocationIoSend");
-        goto error;
-    }
-    RS::dispatch->AllocationIoReceive = (AllocationIoReceiveFnPtr)dlsym(RS::librs, "rsAllocationIoReceive");
-    if (RS::dispatch->AllocationIoReceive == NULL) {
-        ALOGE("Couldn't initialize RS::dispatch->AllocationIoReceive");
+    if (loadSymbols(RS::librs) == false) {
         goto error;
     }
 
