diff --git a/rsFont.cpp b/rsFont.cpp
index 694ea16..2a47ca4 100644
--- a/rsFont.cpp
+++ b/rsFont.cpp
@@ -39,6 +39,7 @@
     mAllocLine = __LINE__;
     mInitialized = false;
     mHasKerning = false;
+    mFace = NULL;
 }
 
 bool Font::init(const char *name, uint32_t fontSize, uint32_t dpi)
@@ -63,8 +64,6 @@
     mFontSize = fontSize;
     mDpi = dpi;
 
-    //LOGE("Font initialized: %s", fullPath.string());
-
     error = FT_Set_Char_Size(mFace, fontSize * 64, 0, dpi, 0);
     if(error) {
         LOGE("Unable to set font size on %s", fullPath.string());
@@ -206,8 +205,6 @@
     newGlyph->mGlyphIndex = FT_Get_Char_Index(mFace, glyph);
     newGlyph->mIsValid = false;
 
-    //LOGE("Glyph = %c, face index: %u", (unsigned char)glyph, newGlyph->mGlyphIndex);
-
     updateGlyphCache(newGlyph);
 
     return newGlyph;
@@ -261,6 +258,7 @@
     mMaxNumberOfQuads = 1024;
     mCurrentQuadIndex = 0;
     mRSC = NULL;
+    mLibrary = NULL;
 }
 
 FontState::~FontState()
@@ -281,13 +279,12 @@
             return NULL;
         }
     }
+
     return mLibrary;
 }
 
 void FontState::init(Context *rsc)
 {
-    //getLib();
-
     mRSC = rsc;
 }
 
@@ -350,8 +347,6 @@
     uint32_t endX = startX + bitmap->width;
     uint32_t endY = startY + bitmap->rows;
 
-    //LOGE("Bitmap width, height = %i, %i", (int)bitmap->width, (int)bitmap->rows);
-
     uint32_t cacheWidth = getCacheTextureType()->getDimX();
 
     unsigned char *cacheBuffer = (unsigned char*)mTextTexture->getPtr();
@@ -508,13 +503,6 @@
 
     initVertexArrayBuffers();
 
-    /*mTextMeshRefs = new ObjectBaseRef<SimpleMesh>[mNumMeshes];
-
-    for(uint32_t i = 0; i < mNumMeshes; i ++){
-        SimpleMesh *textMesh = createTextMesh();
-        mTextMeshRefs[i].set(textMesh);
-    }*/
-
     mInitialized = true;
 }
 
@@ -626,6 +614,11 @@
         }
         currentFont = mDefault.get();
     }
+    if(!currentFont) {
+        LOGE("Unable to initialize any fonts");
+        return;
+    }
+
     currentFont->renderUTF(text, len, startIndex, numGlyphs, x, y);
 
     if(mCurrentQuadIndex != 0) {
@@ -681,8 +674,14 @@
 
     mDefault.clear();
 
+    Vector<Font*> fontsToDereference = mActiveFonts;
+    for(uint32_t i = 0; i < fontsToDereference.size(); i ++) {
+        fontsToDereference[i]->zeroUserRef();
+    }
+
     if(mLibrary) {
         FT_Done_FreeType( mLibrary );
+        mLibrary = NULL;
     }
 }
 
