diff --git a/ring-android/jni/ringservice.c.template b/ring-android/jni/ringservice.c.template
index 847a035..92f04c0 100644
--- a/ring-android/jni/ringservice.c.template
+++ b/ring-android/jni/ringservice.c.template
@@ -1,14 +1,14 @@
 #include "logger.h"
 
 JavaVM *gJavaVM;
-const char *ksflphoneservicePath = "cx/ring/service/RingserviceJNI";
+const char *kringservicePath = "cx/ring/service/RingserviceJNI";
 
 void deinitClassHelper(JNIEnv *env, jobject obj) {
-	SFL_INFO("deinitClassHelper");
+	RING_INFO("deinitClassHelper");
 
 	/* delete cached object instances */
     env->DeleteGlobalRef(obj);
-	SFL_INFO("deinitClassHelper: object %x deleted", obj);
+	RING_INFO("deinitClassHelper: object %x deleted", obj);
 }
 
 JNIEXPORT jint JNI_OnLoad(JavaVM *vm, void *reserved) {
@@ -16,7 +16,7 @@
 	jclass clazz;
 	jint r;
 
-    SFL_INFO("JNI_OnLoad");
+    RING_INFO("JNI_OnLoad");
 
 	//Assume it is c++
 	r = vm->GetEnv ((void **) &env, JNI_VERSION_1_6);
@@ -24,14 +24,14 @@
 		RING_ERR("JNI_OnLoad: failed to get the environment using GetEnv()");
         return -1;
     }
-	SFL_INFO("JNI_Onload: GetEnv %p", env);
+	RING_INFO("JNI_Onload: GetEnv %p", env);
 
-	clazz = env->FindClass (ksflphoneservicePath);
+	clazz = env->FindClass (kringservicePath);
 	if (!clazz) {
-        RING_ERR("JNI_Onload: whoops, %s class not found!", ksflphoneservicePath);
+        RING_ERR("JNI_Onload: whoops, %s class not found!", kringservicePath);
 	}
 	gJavaVM = vm;
-	SFL_INFO("JNI_Onload: JavaVM %p", gJavaVM);
+	RING_INFO("JNI_Onload: JavaVM %p", gJavaVM);
 
 	/* put instances of class object we need into cache */
     //initClassHelper(env, kManagerPath, &gManagerObject);
@@ -50,24 +50,24 @@
     JNIEnv* env;
 	jclass clazz;
 
-	SFL_INFO("JNI_OnUnLoad");
+	RING_INFO("JNI_OnUnLoad");
 
 	/* get env */
     if (vm->GetEnv(reinterpret_cast<void**>(&env), JNI_VERSION_1_6) != JNI_OK) {
 		RING_ERR("JNI_OnUnLoad: failed to get the environment using GetEnv()");
         return;
     }
-	SFL_INFO("JNI_OnUnLoad: GetEnv %p", env);
+	RING_INFO("JNI_OnUnLoad: GetEnv %p", env);
 
     /* Get jclass with env->FindClass */
-	clazz = env->FindClass(ksflphoneservicePath);
+	clazz = env->FindClass(kringservicePath);
 	if (!clazz) {
-        RING_ERR("JNI_OnUnLoad: whoops, %s class not found!", ksflphoneservicePath);
+        RING_ERR("JNI_OnUnLoad: whoops, %s class not found!", kringservicePath);
 	}
 
 	/* remove instances of class object we need into cache */
     //deinitClassHelper(env, gManagerObject);
 
 	env->UnregisterNatives(clazz);
-	SFL_INFO("JNI_OnUnLoad: Native functions unregistered");
+	RING_INFO("JNI_OnUnLoad: Native functions unregistered");
 }
