diff --git a/java/Fountain/res/raw/fountain.c b/java/Fountain/res/raw/fountain.c
index e7804a5..8c1cad4 100644
--- a/java/Fountain/res/raw/fountain.c
+++ b/java/Fountain/res/raw/fountain.c
@@ -12,7 +12,6 @@
     float height = getHeight();
 
     if (rate) {
-        debugI32("rate", rate);
         int *dataI = loadArrayI32(1, 0);
         float rMax = ((float)rate) * 0.005f;
         int x = Control_x;
diff --git a/rsContext.cpp b/rsContext.cpp
index 3ebfdce..52c2b78 100644
--- a/rsContext.cpp
+++ b/rsContext.cpp
@@ -76,18 +76,17 @@
     mGL.mRenderer = glGetString(GL_RENDERER);
     mGL.mExtensions = glGetString(GL_EXTENSIONS);
 
-    LOGV("EGL Version %i %i", mEGL.mMajorVersion, mEGL.mMinorVersion);
-    LOGV("GL Version %s", mGL.mVersion);
-    LOGV("GL Vendor %s", mGL.mVendor);
-    LOGV("GL Renderer %s", mGL.mRenderer);
-    LOGV("GL Extensions %s", mGL.mExtensions);
+    //LOGV("EGL Version %i %i", mEGL.mMajorVersion, mEGL.mMinorVersion);
+    //LOGV("GL Version %s", mGL.mVersion);
+    //LOGV("GL Vendor %s", mGL.mVendor);
+    //LOGV("GL Renderer %s", mGL.mRenderer);
+    //LOGV("GL Extensions %s", mGL.mExtensions);
 
-    if (memcmp(mGL.mVersion, "OpenGL ES-CM", 12)) {
+    if ((strlen((const char *)mGL.mVersion) < 12) || memcmp(mGL.mVersion, "OpenGL ES-CM", 12)) {
         LOGE("Error, OpenGL ES Lite not supported");
+    } else {
+        sscanf((const char *)mGL.mVersion + 13, "%i.%i", &mGL.mMajorVersion, &mGL.mMinorVersion);
     }
-    sscanf((const char *)mGL.mVersion + 13, "%i.%i", &mGL.mMajorVersion, &mGL.mMinorVersion);
-
-
 }
 
 bool Context::runScript(Script *s, uint32_t launchID)
@@ -115,7 +114,6 @@
     //glColor4f(1,1,1,1);
     //glEnable(GL_LIGHT0);
     glViewport(0, 0, mEGL.mWidth, mEGL.mHeight);
-#if 1
     glColorMask(GL_TRUE, GL_TRUE, GL_TRUE, GL_TRUE);
 
     glClearColor(mRootScript->mEnviroment.mClearColor[0],
@@ -129,7 +127,7 @@
     } else {
         glClear(GL_COLOR_BUFFER_BIT);
     }
-#endif
+
 #if RS_LOG_TIMES
     timerSet(RS_TIMER_SCRIPT);
 #endif
diff --git a/rsScriptC.cpp b/rsScriptC.cpp
index db4fd09..9419829 100644
--- a/rsScriptC.cpp
+++ b/rsScriptC.cpp
@@ -267,7 +267,7 @@
                 tmp.append(c->getComponentName());
                 sprintf(buf, " %i\n", ct2);
                 tmp.append(buf);
-                LOGD(tmp);
+                //LOGD(tmp);
                 str->append(tmp);
             }
         }
@@ -295,7 +295,7 @@
                 sprintf(buf, "%i, %i)\n", ct, ct2);
                 tmp.append(buf);
 
-                LOGD(tmp);
+                //LOGD(tmp);
                 str->append(tmp);
             }
         }
