diff --git a/RenderScript.h b/RenderScript.h
index f4e3f57..3f2d67a 100644
--- a/RenderScript.h
+++ b/RenderScript.h
@@ -49,6 +49,12 @@
 void rsaElementGetNativeData(RsContext, RsElement, uint32_t *elemData, uint32_t elemDataSize);
 void rsaElementGetSubElements(RsContext, RsElement, uint32_t *ids, const char **names, uint32_t dataSize);
 
+RsDevice rsDeviceCreate();
+void rsDeviceDestroy(RsDevice dev);
+void rsDeviceSetConfig(RsDevice dev, RsDeviceParam p, int32_t value);
+RsContext rsContextCreate(RsDevice dev, uint32_t version);
+RsContext rsContextCreateGL(RsDevice dev, uint32_t version, RsSurfaceConfig sc, uint32_t dpi);
+
 
 
 #ifdef ANDROID_RS_SERIALIZE
diff --git a/rs.spec b/rs.spec
index 4c8b5db..87d764d 100644
--- a/rs.spec
+++ b/rs.spec
@@ -1,42 +1,4 @@
 
-DeviceCreate {
-    direct
-    nocontext
-    ret RsDevice
-}
-
-DeviceDestroy {
-    direct
-    nocontext
-    param RsDevice dev
-}
-
-DeviceSetConfig {
-    direct
-    nocontext
-    param RsDevice dev
-    param RsDeviceParam p
-    param int32_t value
-}
-
-ContextCreate {
-    direct
-    nocontext
-    param RsDevice dev
-    param uint32_t version
-    ret RsContext
-}
-
-ContextCreateGL {
-    direct
-    nocontext
-    param RsDevice dev
-    param uint32_t version
-    param RsSurfaceConfig sc
-    param uint32_t dpi
-    ret RsContext
-}
-
 ContextDestroy {
     direct
 }
diff --git a/rsContext.cpp b/rsContext.cpp
index d3bd0d9..bab5c58 100644
--- a/rsContext.cpp
+++ b/rsContext.cpp
@@ -637,22 +637,6 @@
     LOGV("rsContextDestroy 2 %p", rsc);
 }
 
-RsContext rsi_ContextCreate(RsDevice vdev, uint32_t version) {
-    LOGV("rsContextCreate %p", vdev);
-    Device * dev = static_cast<Device *>(vdev);
-    Context *rsc = Context::createContext(dev, NULL);
-    return rsc;
-}
-
-RsContext rsi_ContextCreateGL(RsDevice vdev, uint32_t version,
-                            RsSurfaceConfig sc, uint32_t dpi) {
-    LOGV("rsContextCreateGL %p", vdev);
-    Device * dev = static_cast<Device *>(vdev);
-    Context *rsc = Context::createContext(dev, &sc);
-    rsc->setDPI(dpi);
-    LOGV("rsContextCreateGL ret %p ", rsc);
-    return rsc;
-}
 
 RsMessageToClientType rsi_ContextPeekMessage(Context *rsc,
                                            size_t * receiveLen, size_t receiveLen_length,
@@ -679,6 +663,23 @@
 }
 }
 
+RsContext rsContextCreate(RsDevice vdev, uint32_t version) {
+    LOGV("rsContextCreate %p", vdev);
+    Device * dev = static_cast<Device *>(vdev);
+    Context *rsc = Context::createContext(dev, NULL);
+    return rsc;
+}
+
+RsContext rsContextCreateGL(RsDevice vdev, uint32_t version,
+                            RsSurfaceConfig sc, uint32_t dpi) {
+    LOGV("rsContextCreateGL %p", vdev);
+    Device * dev = static_cast<Device *>(vdev);
+    Context *rsc = Context::createContext(dev, &sc);
+    rsc->setDPI(dpi);
+    LOGV("rsContextCreateGL ret %p ", rsc);
+    return rsc;
+}
+
 // Only to be called at a3d load time, before object is visible to user
 // not thread safe
 void rsaGetName(RsContext con, void * obj, const char **name) {
diff --git a/rsDevice.cpp b/rsDevice.cpp
index 849fd98..d7d03f6 100644
--- a/rsDevice.cpp
+++ b/rsDevice.cpp
@@ -40,20 +40,17 @@
     }
 }
 
-namespace android {
-namespace renderscript {
-
-RsDevice rsi_DeviceCreate() {
+RsDevice rsDeviceCreate() {
     Device * d = new Device();
     return d;
 }
 
-void rsi_DeviceDestroy(RsDevice dev) {
+void rsDeviceDestroy(RsDevice dev) {
     Device * d = static_cast<Device *>(dev);
     delete d;
 }
 
-void rsi_DeviceSetConfig(RsDevice dev, RsDeviceParam p, int32_t value) {
+void rsDeviceSetConfig(RsDevice dev, RsDeviceParam p, int32_t value) {
     Device * d = static_cast<Device *>(dev);
     if (p == RS_DEVICE_PARAM_FORCE_SOFTWARE_GL) {
         d->mForceSW = value != 0;
@@ -62,5 +59,3 @@
     rsAssert(0);
 }
 
-}
-}
