diff --git a/cpu_ref/rsCpuCore.cpp b/cpu_ref/rsCpuCore.cpp
index afa9c57..a4cf0ad 100644
--- a/cpu_ref/rsCpuCore.cpp
+++ b/cpu_ref/rsCpuCore.cpp
@@ -26,8 +26,9 @@
 #include <sched.h>
 #include <sys/syscall.h>
 #include <string.h>
+#include <unistd.h>
 
-#ifndef RS_SERVER
+#if !defined(RS_SERVER) && !defined(RS_COMPATIBILITY_LIB)
 #include <cutils/properties.h>
 #include "utils/StopWatch.h"
 #endif
diff --git a/cpu_ref/rsCpuRuntimeStubs.cpp b/cpu_ref/rsCpuRuntimeStubs.cpp
index 889e008..9685511 100644
--- a/cpu_ref/rsCpuRuntimeStubs.cpp
+++ b/cpu_ref/rsCpuRuntimeStubs.cpp
@@ -26,10 +26,6 @@
 
 #include <time.h>
 
-#ifndef RS_SERVER
-#include "utils/Timers.h"
-#endif
-
 using namespace android;
 using namespace android::renderscript;
 
diff --git a/cpu_ref/rsCpuScript.cpp b/cpu_ref/rsCpuScript.cpp
index d9e0044..22e2f0e 100644
--- a/cpu_ref/rsCpuScript.cpp
+++ b/cpu_ref/rsCpuScript.cpp
@@ -19,15 +19,6 @@
 #include "rsCpuCore.h"
 
 #include "rsCpuScript.h"
-//#include "rsdRuntime.h"
-//#include "rsdAllocation.h"
-//#include "rsCpuIntrinsics.h"
-
-#ifndef RS_SERVER
-#include "utils/Vector.h"
-#include "utils/Timers.h"
-#include "utils/StopWatch.h"
-#endif
 
 #ifdef RS_COMPATIBILITY_LIB
     #include <dlfcn.h>
@@ -191,8 +182,7 @@
 #ifndef RS_SERVER
     String8 scriptSOName(cacheDir);
     scriptSOName = scriptSOName.getPathDir();
-    scriptSOName.appendPath("lib");
-    scriptSOName.append("/librs.");
+    scriptSOName.append("/lib/librs.");
 #else
     String8 scriptSOName("lib");
 #endif
diff --git a/cpu_ref/rsCpuScriptGroup.cpp b/cpu_ref/rsCpuScriptGroup.cpp
index b3b5bf9..91779b4 100644
--- a/cpu_ref/rsCpuScriptGroup.cpp
+++ b/cpu_ref/rsCpuScriptGroup.cpp
@@ -16,16 +16,6 @@
 
 #include "rsCpuCore.h"
 #include "rsCpuScript.h"
-#include "rsCpuScriptGroup.h"
-
-#ifndef RS_SERVER
-#include <bcc/BCCContext.h>
-#include <bcc/Renderscript/RSCompilerDriver.h>
-#include <bcc/Renderscript/RSExecutable.h>
-#include <bcc/Renderscript/RSInfo.h>
-#endif
-
-#include "rsScript.h"
 #include "rsScriptGroup.h"
 #include "rsCpuScriptGroup.h"
 //#include "rsdBcc.h"
diff --git a/driver/rsdAllocation.cpp b/driver/rsdAllocation.cpp
index f502f32..2daafbe 100644
--- a/driver/rsdAllocation.cpp
+++ b/driver/rsdAllocation.cpp
@@ -19,10 +19,12 @@
 
 #include "rsAllocation.h"
 
-#ifndef RS_SERVER
+#if !defined(RS_SERVER) && !defined(RS_COMPATIBILITY_LIB)
 #include "system/window.h"
 #include "ui/Rect.h"
 #include "ui/GraphicBufferMapper.h"
+#else
+#include "system/graphics.h"
 #endif
 
 #ifndef RS_COMPATIBILITY_LIB
diff --git a/driver/rsdAllocation.h b/driver/rsdAllocation.h
index 97e0d6a..35999d3 100644
--- a/driver/rsdAllocation.h
+++ b/driver/rsdAllocation.h
@@ -24,12 +24,15 @@
 #include "../cpu_ref/rsd_cpu.h"
 
 #ifndef RS_SERVER
-#include "gui/CpuConsumer.h"
-#include "gui/GLConsumer.h"
 #include <GLES/gl.h>
 #include <GLES2/gl2.h>
 #endif
 
+#if !defined(RS_SERVER) && !defined(RS_COMPATIBILITY_LIB)
+#include "gui/CpuConsumer.h"
+#include "gui/GLConsumer.h"
+#endif
+
 class RsdFrameBufferObj;
 struct ANativeWindow;
 struct ANativeWindowBuffer;
@@ -77,7 +80,7 @@
     ANativeWindow *wnd;
     ANativeWindowBuffer *wndBuffer;
 
-#ifndef RS_SERVER
+#if !defined(RS_SERVER) && !defined(RS_COMPATIBILITY_LIB)
     android::sp< android::CpuConsumer > cpuConsumer;
     android::CpuConsumer::LockedBuffer lb;
 #endif
diff --git a/driver/rsdBcc.cpp b/driver/rsdBcc.cpp
index 9252dbf..212184e 100644
--- a/driver/rsdBcc.cpp
+++ b/driver/rsdBcc.cpp
@@ -25,7 +25,7 @@
 #include "rsElement.h"
 #include "rsScriptC.h"
 
-#ifndef RS_SERVER
+#if !defined(RS_SERVER) && !defined(RS_COMPATIBILITY_LIB)
 #include "utils/Vector.h"
 #include "utils/Timers.h"
 #include "utils/StopWatch.h"
diff --git a/driver/rsdRuntimeStubs.cpp b/driver/rsdRuntimeStubs.cpp
index c22b966..cb3a5b4 100644
--- a/driver/rsdRuntimeStubs.cpp
+++ b/driver/rsdRuntimeStubs.cpp
@@ -1442,31 +1442,31 @@
     SC_debugFv4(s, f1, f2, f3, f4);
 }
 
-void rsDebug(const char *s, float2 f) {
-    SC_debugF2(s, f);
+void rsDebug(const char *s, const float2 *f) {
+    SC_debugF2(s, *f);
 }
 
-void rsDebug(const char *s, float3 f) {
-    SC_debugF3(s, f);
+void rsDebug(const char *s, const float3 *f) {
+    SC_debugF3(s, *f);
 }
 
-void rsDebug(const char *s, float4 f) {
-    SC_debugF4(s, f);
+void rsDebug(const char *s, const float4 *f) {
+    SC_debugF4(s, *f);
 }
 
 void rsDebug(const char *s, double d) {
     SC_debugD(s, d);
 }
 
-void rsDebug(const char *s, rs_matrix4x4 *m) {
+void rsDebug(const char *s, const rs_matrix4x4 *m) {
     SC_debugFM4v4(s, (float *) m);
 }
 
-void rsDebug(const char *s, rs_matrix3x3 *m) {
+void rsDebug(const char *s, const rs_matrix3x3 *m) {
     SC_debugFM3v3(s, (float *) m);
 }
 
-void rsDebug(const char *s, rs_matrix2x2 *m) {
+void rsDebug(const char *s, const rs_matrix2x2 *m) {
     SC_debugFM2v2(s, (float *) m);
 }
 
@@ -1474,96 +1474,96 @@
     SC_debugI8(s, c);
 }
 
-void rsDebug(const char *s, char2 c) {
-    SC_debugC2(s, c);
+void rsDebug(const char *s, const char2 *c) {
+    SC_debugC2(s, *c);
 }
 
-void rsDebug(const char *s, char3 c) {
-    SC_debugC3(s, c);
+void rsDebug(const char *s, const char3 *c) {
+    SC_debugC3(s, *c);
 }
 
-void rsDebug(const char *s, char4 c) {
-    SC_debugC4(s, c);
+void rsDebug(const char *s, const char4 *c) {
+    SC_debugC4(s, *c);
 }
 
 void rsDebug(const char *s, unsigned char c) {
     SC_debugU8(s, c);
 }
 
-void rsDebug(const char *s, uchar2 c) {
-    SC_debugUC2(s, c);
+void rsDebug(const char *s, const uchar2 *c) {
+    SC_debugUC2(s, *c);
 }
 
-void rsDebug(const char *s, uchar3 c) {
-    SC_debugUC3(s, c);
+void rsDebug(const char *s, const uchar3 *c) {
+    SC_debugUC3(s, *c);
 }
 
-void rsDebug(const char *s, uchar4 c) {
-    SC_debugUC4(s, c);
+void rsDebug(const char *s, const uchar4 *c) {
+    SC_debugUC4(s, *c);
 }
 
 void rsDebug(const char *s, short c) {
     SC_debugI16(s, c);
 }
 
-void rsDebug(const char *s, short2 c) {
-    SC_debugS2(s, c);
+void rsDebug(const char *s, const short2 *c) {
+    SC_debugS2(s, *c);
 }
 
-void rsDebug(const char *s, short3 c) {
-    SC_debugS3(s, c);
+void rsDebug(const char *s, const short3 *c) {
+    SC_debugS3(s, *c);
 }
 
-void rsDebug(const char *s, short4 c) {
-    SC_debugS4(s, c);
+void rsDebug(const char *s, const short4 *c) {
+    SC_debugS4(s, *c);
 }
 
 void rsDebug(const char *s, unsigned short c) {
     SC_debugU16(s, c);
 }
 
-void rsDebug(const char *s, ushort2 c) {
-    SC_debugUS2(s, c);
+void rsDebug(const char *s, const ushort2 *c) {
+    SC_debugUS2(s, *c);
 }
 
-void rsDebug(const char *s, ushort3 c) {
-    SC_debugUS3(s, c);
+void rsDebug(const char *s, const ushort3 *c) {
+    SC_debugUS3(s, *c);
 }
 
-void rsDebug(const char *s, ushort4 c) {
-    SC_debugUS4(s, c);
+void rsDebug(const char *s, const ushort4 *c) {
+    SC_debugUS4(s, *c);
 }
 
 void rsDebug(const char *s, int c) {
     SC_debugI32(s, c);
 }
 
-void rsDebug(const char *s, int2 c) {
-    SC_debugI2(s, c);
+void rsDebug(const char *s, const int2 *c) {
+    SC_debugI2(s, *c);
 }
 
-void rsDebug(const char *s, int3 c) {
-    SC_debugI3(s, c);
+void rsDebug(const char *s, const int3 *c) {
+    SC_debugI3(s, *c);
 }
 
-void rsDebug(const char *s, int4 c) {
-    SC_debugI4(s, c);
+void rsDebug(const char *s, const int4 *c) {
+    SC_debugI4(s, *c);
 }
 
 void rsDebug(const char *s, unsigned int c) {
     SC_debugU32(s, c);
 }
 
-void rsDebug(const char *s, uint2 c) {
-    SC_debugUI2(s, c);
+void rsDebug(const char *s, const uint2 *c) {
+    SC_debugUI2(s, *c);
 }
 
-void rsDebug(const char *s, uint3 c) {
-    SC_debugUI3(s, c);
+void rsDebug(const char *s, const uint3 *c) {
+    SC_debugUI3(s, *c);
 }
 
-void rsDebug(const char *s, uint4 c) {
-    SC_debugUI4(s, c);
+void rsDebug(const char *s, const uint4 *c) {
+    SC_debugUI4(s, *c);
 }
 
 void rsDebug(const char *s, long c) {
@@ -1574,16 +1574,16 @@
     SC_debugLL64(s, c);
 }
 
-void rsDebug(const char *s, long2 c) {
-    SC_debugL2(s, c);
+void rsDebug(const char *s, const long2 *c) {
+    SC_debugL2(s, *c);
 }
 
-void rsDebug(const char *s, long3 c) {
-    SC_debugL3(s, c);
+void rsDebug(const char *s, const long3 *c) {
+    SC_debugL3(s, *c);
 }
 
-void rsDebug(const char *s, long4 c) {
-    SC_debugL4(s, c);
+void rsDebug(const char *s, const long4 *c) {
+    SC_debugL4(s, *c);
 }
 
 void rsDebug(const char *s, unsigned long c) {
@@ -1594,16 +1594,16 @@
     SC_debugULL64(s, c);
 }
 
-void rsDebug(const char *s, ulong2 c) {
-    SC_debugUL2(s, c);
+void rsDebug(const char *s, const ulong2 *c) {
+    SC_debugUL2(s, *c);
 }
 
-void rsDebug(const char *s, ulong3 c) {
-    SC_debugUL3(s, c);
+void rsDebug(const char *s, const ulong3 *c) {
+    SC_debugUL3(s, *c);
 }
 
-void rsDebug(const char *s, ulong4 c) {
-    SC_debugUL4(s, c);
+void rsDebug(const char *s, const ulong4 *c) {
+    SC_debugUL4(s, *c);
 }
 
 void rsDebug(const char *s, const void *p) {
diff --git a/driver/rsdShaderCache.h b/driver/rsdShaderCache.h
index 1ac1aa1..6de1d63 100644
--- a/driver/rsdShaderCache.h
+++ b/driver/rsdShaderCache.h
@@ -25,7 +25,7 @@
 }
 }
 
-#ifndef RS_SERVER
+#if !defined(RS_SERVER) && !defined(RS_COMPATIBILITY_LIB)
 #include <utils/String8.h>
 #include <utils/Vector.h>
 #else
diff --git a/java/tests/ImageProcessing2/AndroidManifest.xml b/java/tests/ImageProcessing2/AndroidManifest.xml
index 20ee053..0129fa8 100644
--- a/java/tests/ImageProcessing2/AndroidManifest.xml
+++ b/java/tests/ImageProcessing2/AndroidManifest.xml
@@ -2,6 +2,7 @@
 
 <manifest xmlns:android="http://schemas.android.com/apk/res/android"
     package="com.android.rs.image2">
+    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
     <uses-sdk android:minSdkVersion="8" />
     <application android:label="IP GB">
         <activity android:name="ImageProcessingActivity2">
diff --git a/rsAllocation.cpp b/rsAllocation.cpp
index b558d10..0c271c1 100644
--- a/rsAllocation.cpp
+++ b/rsAllocation.cpp
@@ -19,7 +19,7 @@
 #include "rsAdapter.h"
 #include "rs_hal.h"
 
-#ifndef RS_SERVER
+#if !defined(RS_SERVER) && !defined(RS_COMPATIBILITY_LIB)
 #include "system/window.h"
 #include "gui/GLConsumer.h"
 #endif
diff --git a/rsContext.cpp b/rsContext.cpp
index bb2808e..74c40c5 100644
--- a/rsContext.cpp
+++ b/rsContext.cpp
@@ -32,8 +32,9 @@
 #include <sys/syscall.h>
 #include <string.h>
 #include <dlfcn.h>
+#include <unistd.h>
 
-#ifndef RS_SERVER
+#if !defined(RS_SERVER)
 #include <cutils/properties.h>
 #endif
 
diff --git a/rsCppUtils.h b/rsCppUtils.h
index abae7d8..ced13c1 100644
--- a/rsCppUtils.h
+++ b/rsCppUtils.h
@@ -17,7 +17,7 @@
 #ifndef ANDROID_RS_CPP_UTILS_H
 #define ANDROID_RS_CPP_UTILS_H
 
-#ifndef RS_SERVER
+#if !defined(RS_SERVER) && !defined(RS_COMPATIBILITY_LIB)
 #include <utils/Log.h>
 #include <utils/String8.h>
 #include <utils/Vector.h>
@@ -32,12 +32,25 @@
 
 #include <math.h>
 
-#ifdef RS_SERVER
+#ifdef RS_COMPATIBILITY_LIB
+#include <android/log.h>
+#endif
+
+#if defined(RS_SERVER) || defined(RS_COMPATIBILITY_LIB)
 
 #include <string>
 #include <vector>
 #include <algorithm>
 
+#define ALOGE(...) \
+    __android_log_print(ANDROID_LOG_ERROR, LOG_TAG, __VA_ARGS__);
+#define ALOGW(...) \
+    __android_log_print(ANDROID_LOG_WARN, LOG_TAG, __VA_ARGS__);
+#define ALOGD(...) \
+    __android_log_print(ANDROID_LOG_DEBUG, LOG_TAG, __VA_ARGS__);
+#define ALOGV(...) \
+    __android_log_print(ANDROID_LOG_VERBOSE, LOG_TAG, __VA_ARGS__);
+
 namespace android {
 
     // server has no Vector or String8 classes; implement on top of STL
@@ -46,6 +59,9 @@
     String8(const char *ptr) : std::string(ptr) {
 
         }
+    String8(const char *ptr, size_t len) : std::string(ptr, len) {
+
+        }
     String8() : std::string() {
 
         }
@@ -60,7 +76,16 @@
         void setTo(const char* str) {
             this->assign(str);
         }
+        String8 getPathDir(void) const {
+            const char* cp;
+            const char*const str = this->c_str();
 
+            cp = strrchr(str, OS_PATH_SEPARATOR);
+            if (cp == NULL)
+                return String8("");
+            else
+                return String8(str, cp - str);
+        }
     };
 
     template <class T> class Vector: public std::vector<T> {
@@ -80,11 +105,11 @@
         }
 
         T* editArray() {
-            return this->data();
+            return (T*)(this->begin());
         }
 
         const T* array() {
-            return this->data();
+            return (const T*)(this->begin());
         }
 
     };
@@ -106,17 +131,56 @@
         }
 
         bool* editArray() {
-            return (bool*)this->data();
+            return (bool*)(this->begin());
         }
 
         const bool* array() {
-            return (const bool*)this->data();
+            return (const bool*)(this->begin());
         }
     };
 
 }
 
-#endif // RS_SERVER
+typedef int64_t nsecs_t;  // nano-seconds
+
+enum {
+    SYSTEM_TIME_REALTIME = 0,  // system-wide realtime clock
+    SYSTEM_TIME_MONOTONIC = 1, // monotonic time since unspecified starting point
+    SYSTEM_TIME_PROCESS = 2,   // high-resolution per-process clock
+    SYSTEM_TIME_THREAD = 3,    // high-resolution per-thread clock
+    SYSTEM_TIME_BOOTTIME = 4   // same as SYSTEM_TIME_MONOTONIC, but including CPU suspend time
+};
+
+static inline nsecs_t systemTime(int clock)
+{
+#if defined(HAVE_POSIX_CLOCKS)
+    static const clockid_t clocks[] = {
+            CLOCK_REALTIME,
+            CLOCK_MONOTONIC,
+            CLOCK_PROCESS_CPUTIME_ID,
+            CLOCK_THREAD_CPUTIME_ID,
+            CLOCK_BOOTTIME
+    };
+    struct timespec t;
+    t.tv_sec = t.tv_nsec = 0;
+    clock_gettime(clocks[clock], &t);
+    return nsecs_t(t.tv_sec)*1000000000LL + t.tv_nsec;
+#else
+    // we don't support the clocks here.
+    struct timeval t;
+    t.tv_sec = t.tv_usec = 0;
+    gettimeofday(&t, NULL);
+    return nsecs_t(t.tv_sec)*1000000000LL + nsecs_t(t.tv_usec)*1000LL;
+#endif
+}
+
+static inline nsecs_t nanoseconds_to_milliseconds(nsecs_t secs)
+{
+    return secs/1000000;
+}
+
+
+#endif // RS_SERVER || RS_COMPATIBILITY_LIB
 
 namespace android {
 namespace renderscript {
diff --git a/rsFifoSocket.cpp b/rsFifoSocket.cpp
index c10ec4f..51f3f07 100644
--- a/rsFifoSocket.cpp
+++ b/rsFifoSocket.cpp
@@ -24,11 +24,6 @@
 #include <sys/types.h>
 #include <sys/socket.h>
 
-#ifndef RS_SERVER
-#include "utils/Timers.h"
-#include "utils/StopWatch.h"
-#endif
-
 using namespace android;
 using namespace android::renderscript;
 
diff --git a/rsObjectBase.cpp b/rsObjectBase.cpp
index f864bac..c8d7349 100644
--- a/rsObjectBase.cpp
+++ b/rsObjectBase.cpp
@@ -29,6 +29,7 @@
     mNext = NULL;
     mPrev = NULL;
     mDH = NULL;
+    mName = NULL;
 
 #if RS_OBJECT_DEBUG
     mDH = new DebugHelper();
@@ -47,6 +48,8 @@
     mDH = NULL;
 #endif
 
+    free(const_cast<char *>(mName));
+
     if (mPrev || mNext) {
         // While the normal practice is to call remove before we call
         // delete.  Its possible for objects without a re-use list
@@ -62,9 +65,9 @@
 }
 
 void ObjectBase::dumpLOGV(const char *op) const {
-    if (mName.size()) {
+    if (mName) {
         ALOGV("%s RSobj %p, name %s, refs %i,%i  links %p,%p,%p",
-             op, this, mName.string(), mUserRefCount, mSysRefCount, mNext, mPrev, mRSC);
+             op, this, mName, mUserRefCount, mSysRefCount, mNext, mPrev, mRSC);
     } else {
         ALOGV("%s RSobj %p, no-name, refs %i,%i  links %p,%p,%p",
              op, this, mUserRefCount, mSysRefCount, mNext, mPrev, mRSC);
@@ -152,11 +155,14 @@
 }
 
 void ObjectBase::setName(const char *name) {
-    mName.setTo(name);
+    mName = strdup(name);
 }
 
 void ObjectBase::setName(const char *name, uint32_t len) {
-    mName.setTo(name, len);
+    char *c = (char*)calloc(len + 1, sizeof(char));
+    rsAssert(c);
+    memcpy(c, name, len);
+    mName = c;
 }
 
 void ObjectBase::asyncLock() {
diff --git a/rsObjectBase.h b/rsObjectBase.h
index 470c334..12c89a3 100644
--- a/rsObjectBase.h
+++ b/rsObjectBase.h
@@ -42,7 +42,7 @@
     static bool checkDelete(const ObjectBase *);
 
     const char * getName() const {
-        return mName.string();
+        return mName;
     }
     void setName(const char *);
     void setName(const char *, uint32_t len);
@@ -79,7 +79,7 @@
     void add() const;
     void remove() const;
 
-    String8 mName;
+    const char* mName;
     mutable int32_t mSysRefCount;
     mutable int32_t mUserRefCount;
 
diff --git a/rsRuntime.h b/rsRuntime.h
index d55042c..2939176 100644
--- a/rsRuntime.h
+++ b/rsRuntime.h
@@ -17,7 +17,7 @@
 #include "rsContext.h"
 #include "rsScriptC.h"
 
-#ifndef RS_SERVER
+#if !defined(RS_SERVER) && !defined(RS_COMPATIBILITY_LIB)
 #include "utils/Timers.h"
 #endif
 
diff --git a/rsScriptC.cpp b/rsScriptC.cpp
index 56c9f06..d8f356c 100644
--- a/rsScriptC.cpp
+++ b/rsScriptC.cpp
@@ -24,9 +24,8 @@
 #endif
 #endif
 
-#ifndef RS_SERVER
+#if !defined(RS_SERVER) && !defined(RS_COMPATIBILITY_LIB)
 #include "utils/Timers.h"
-#include "utils/StopWatch.h"
 #endif
 
 #include <sys/stat.h>
diff --git a/rsScriptC_Lib.cpp b/rsScriptC_Lib.cpp
index cd5cc3b..123b8b3 100644
--- a/rsScriptC_Lib.cpp
+++ b/rsScriptC_Lib.cpp
@@ -21,7 +21,7 @@
 #include "rsMatrix2x2.h"
 #include "rsgApiStructs.h"
 
-#ifndef RS_SERVER
+#if !defined(RS_SERVER) && !defined(RS_COMPATIBILITY_LIB)
 #include "utils/Timers.h"
 #endif
 
diff --git a/rsScriptGroup.cpp b/rsScriptGroup.cpp
index 55acf23..17ef211 100644
--- a/rsScriptGroup.cpp
+++ b/rsScriptGroup.cpp
@@ -78,7 +78,7 @@
     return ret;
 }
 
-#ifndef RS_SERVER
+#if !defined(RS_SERVER) && !defined(RS_COMPATIBILITY_LIB)
 static int CompareNodeForSort(ScriptGroup::Node *const* lhs,
                               ScriptGroup::Node *const* rhs) {
     if (lhs[0]->mOrder > rhs[0]->mOrder) {
@@ -181,7 +181,7 @@
     }
 
     // sort
-#ifndef RS_SERVER
+#if !defined(RS_SERVER) && !defined(RS_COMPATIBILITY_LIB)
     mNodes.sort(&CompareNodeForSort);
 #else
     std::sort(mNodes.begin(), mNodes.end(), NodeCompare());
