diff --git a/src/com/android/launcher3/compat/AppWidgetManagerCompatVL.java b/src/com/android/launcher3/compat/AppWidgetManagerCompatVL.java
index 30af38e..7ca35b7 100644
--- a/src/com/android/launcher3/compat/AppWidgetManagerCompatVL.java
+++ b/src/com/android/launcher3/compat/AppWidgetManagerCompatVL.java
@@ -127,7 +127,7 @@
         try {
             drawable = mPm.getUserBadgedDrawableForDensity(new BitmapDrawable(res, bitmap),
                     info.getProfile(), badgeLocation, 0);
-        } catch (Exception e) {
+        } catch (Throwable e) {
             return bitmap;
         }
 
diff --git a/src/com/android/launcher3/compat/LauncherAppsCompatVL.java b/src/com/android/launcher3/compat/LauncherAppsCompatVL.java
index 6422551..c4a9783 100644
--- a/src/com/android/launcher3/compat/LauncherAppsCompatVL.java
+++ b/src/com/android/launcher3/compat/LauncherAppsCompatVL.java
@@ -82,7 +82,11 @@
         synchronized (mCallbacks) {
             mCallbacks.put(callback, wrappedCallback);
         }
-        mLauncherApps.addCallback(wrappedCallback);
+        try {
+            mLauncherApps.registerCallback(wrappedCallback);
+        } catch (Throwable e) {
+            // STOPSHIP(kennyguy): Remove when LRW71 hits googlefood
+        }
     }
 
     public void removeOnAppsChangedCallback(
@@ -92,7 +96,11 @@
             wrappedCallback = mCallbacks.remove(callback);
         }
         if (wrappedCallback != null) {
-            mLauncherApps.removeCallback(wrappedCallback);
+            try {
+                mLauncherApps.unregisterCallback(wrappedCallback);
+            } catch (Throwable e) {
+                // STOPSHIP(kennyguy): Remove when LRW71 hits googlefood
+            }
         }
     }
 
diff --git a/src/com/android/launcher3/compat/PackageInstallerCompatVL.java b/src/com/android/launcher3/compat/PackageInstallerCompatVL.java
index 0a84280..9a0831f 100644
--- a/src/com/android/launcher3/compat/PackageInstallerCompatVL.java
+++ b/src/com/android/launcher3/compat/PackageInstallerCompatVL.java
@@ -47,7 +47,12 @@
         mResumed = false;
         mBound = false;
 
-        mInstaller.registerSessionCallback(mCallback);
+        // STOPSHIP(mokani): Remove catch block once dogfood build is bigger than LRW70.
+        // This hack is just to prevent crash in older builds.
+        try {
+            mInstaller.registerSessionCallback(mCallback);
+        } catch (Throwable e) { }
+
         // On start, send updates for all active sessions
         for (SessionInfo info : mInstaller.getAllSessions()) {
             mPendingReplays.append(info.getSessionId(), info);
@@ -72,7 +77,11 @@
 
     @Override
     public void onStop() {
-        mInstaller.unregisterSessionCallback(mCallback);
+        // STOPSHIP(mokani): Remove catch block once dogfood build is bigger than LRW70.
+        // This hack is just to prevent crash in older builds.
+        try {
+            mInstaller.unregisterSessionCallback(mCallback);
+        } catch (Throwable e) { }
     }
 
     @Override
diff --git a/src/com/android/launcher3/compat/UserManagerCompatVL.java b/src/com/android/launcher3/compat/UserManagerCompatVL.java
index e54db61..ddef431 100644
--- a/src/com/android/launcher3/compat/UserManagerCompatVL.java
+++ b/src/com/android/launcher3/compat/UserManagerCompatVL.java
@@ -55,7 +55,7 @@
         // This hack is just to prevent crash in older builds.
         try {
             return mPm.getUserBadgedIcon(unbadged, user.getUser());
-        } catch (Exception e) {
+        } catch (Throwable e) {
             return unbadged;
         }
     }
@@ -68,8 +68,8 @@
         // STOPSHIP(mokani): Remove catch block once dogfood build is bigger than LRW70.
         // This hack is just to prevent crash in older builds.
         try {
-        return mPm.getUserBadgedLabel(label, user.getUser());
-        } catch (Exception e) {
+            return mPm.getUserBadgedLabel(label, user.getUser());
+        } catch (Throwable e) {
             return label;
         }
     }
