diff --git a/java/com/android/dialer/app/list/DialtactsPagerAdapter.java b/java/com/android/dialer/app/list/DialtactsPagerAdapter.java
index d9cb0c1..1fbf0f0 100644
--- a/java/com/android/dialer/app/list/DialtactsPagerAdapter.java
+++ b/java/com/android/dialer/app/list/DialtactsPagerAdapter.java
@@ -24,9 +24,6 @@
 import android.view.ViewGroup;
 import com.android.dialer.app.calllog.CallLogFragment;
 import com.android.dialer.app.calllog.VisualVoicemailCallLogFragment;
-import com.android.dialer.calllog.CallLogComponent;
-import com.android.dialer.calllog.CallLogFramework;
-import com.android.dialer.calllog.ui.NewCallLogFragment;
 import com.android.dialer.common.Assert;
 import com.android.dialer.common.LogUtil;
 import com.android.dialer.configprovider.ConfigProviderBindings;
@@ -60,12 +57,10 @@
   private final List<Fragment> fragments = new ArrayList<>();
   private final String[] tabTitles;
   private final boolean useNewSpeedDialTab;
-  private final boolean useNewCallLogTab;
   private final boolean useNewContactsTab;
   private OldSpeedDialFragment oldSpeedDialFragment;
   private SpeedDialFragment speedDialFragment;
   private CallLogFragment callLogFragment;
-  private NewCallLogFragment newCallLogFragment;
   private AllContactsFragment oldContactsFragment;
   private ContactsFragment contactsFragment;
   private CallLogFragment voicemailFragment;
@@ -77,8 +72,6 @@
     super(fm);
     useNewSpeedDialTab =
         ConfigProviderBindings.get(context).getBoolean("enable_new_favorites_tab", false);
-    CallLogFramework callLogFramework = CallLogComponent.get(context).callLogFramework();
-    useNewCallLogTab = callLogFramework.isNewCallLogEnabled(context);
     useNewContactsTab =
         ConfigProviderBindings.get(context).getBoolean("enable_new_contacts_tab", true);
     this.tabTitles = tabTitles;
@@ -108,17 +101,10 @@
           return oldSpeedDialFragment;
         }
       case TAB_INDEX_HISTORY:
-        if (useNewCallLogTab) {
-          if (newCallLogFragment == null) {
-            newCallLogFragment = new NewCallLogFragment();
-          }
-          return newCallLogFragment;
-        } else {
-          if (callLogFragment == null) {
-            callLogFragment = new CallLogFragment(CallLogQueryHandler.CALL_TYPE_ALL);
-          }
-          return callLogFragment;
+        if (callLogFragment == null) {
+          callLogFragment = new CallLogFragment(CallLogQueryHandler.CALL_TYPE_ALL);
         }
+        return callLogFragment;
       case TAB_INDEX_ALL_CONTACTS:
         if (useNewContactsTab) {
           if (contactsFragment == null) {
@@ -159,8 +145,6 @@
       speedDialFragment = (SpeedDialFragment) fragment;
     } else if (fragment instanceof CallLogFragment && position == TAB_INDEX_HISTORY) {
       callLogFragment = (CallLogFragment) fragment;
-    } else if (fragment instanceof NewCallLogFragment) {
-      newCallLogFragment = (NewCallLogFragment) fragment;
     } else if (fragment instanceof ContactsFragment) {
       contactsFragment = (ContactsFragment) fragment;
     } else if (fragment instanceof AllContactsFragment) {
diff --git a/java/com/android/dialer/calllog/CallLogFramework.java b/java/com/android/dialer/calllog/CallLogFramework.java
index d3a2c63..788e56b 100644
--- a/java/com/android/dialer/calllog/CallLogFramework.java
+++ b/java/com/android/dialer/calllog/CallLogFramework.java
@@ -21,11 +21,11 @@
 import android.preference.PreferenceManager;
 import android.support.annotation.MainThread;
 import android.support.annotation.Nullable;
+import com.android.dialer.buildtype.BuildType;
 import com.android.dialer.calllog.datasources.CallLogDataSource;
 import com.android.dialer.calllog.datasources.DataSources;
 import com.android.dialer.common.Assert;
 import com.android.dialer.common.LogUtil;
-import com.android.dialer.configprovider.ConfigProviderBindings;
 import javax.inject.Inject;
 import javax.inject.Singleton;
 
@@ -49,21 +49,20 @@
     this.dataSources = dataSources;
   }
 
-  public boolean isNewCallLogEnabled(Context context) {
-    return ConfigProviderBindings.get(context).getBoolean("enable_new_call_log_tab", false);
-  }
-
   /** Registers the content observers for all data sources. */
   public void registerContentObservers(Context appContext) {
     LogUtil.enterBlock("CallLogFramework.registerContentObservers");
 
-    if (!isNewCallLogEnabled(appContext)) {
-      LogUtil.i("CallLogFramework.registerContentObservers", "new call log not enabled");
-      return;
-    }
-
-    for (CallLogDataSource dataSource : dataSources.getDataSourcesIncludingSystemCallLog()) {
-      dataSource.registerContentObservers(appContext, this);
+    // This is the same condition used in MainImpl#isNewUiEnabled. It means that bugfood/debug
+    // users will have "new call log" content observers firing. These observers usually do simple
+    // things like writing shared preferences.
+    // TODO(zachh): Find a way to access Main#isNewUiEnabled without creating a circular dependency.
+    if (BuildType.get() == BuildType.BUGFOOD || LogUtil.isDebugEnabled()) {
+      for (CallLogDataSource dataSource : dataSources.getDataSourcesIncludingSystemCallLog()) {
+        dataSource.registerContentObservers(appContext, this);
+      }
+    } else {
+      LogUtil.i("CallLogFramework.registerContentObservers", "not registering content observers");
     }
   }
 
diff --git a/java/com/android/dialer/calllog/ui/CoalescedAnnotatedCallLogCursorLoader.java b/java/com/android/dialer/calllog/ui/CoalescedAnnotatedCallLogCursorLoader.java
index 488e8f4..51a5532 100644
--- a/java/com/android/dialer/calllog/ui/CoalescedAnnotatedCallLogCursorLoader.java
+++ b/java/com/android/dialer/calllog/ui/CoalescedAnnotatedCallLogCursorLoader.java
@@ -17,8 +17,8 @@
 package com.android.dialer.calllog.ui;
 
 import android.content.Context;
-import android.content.CursorLoader;
 import android.database.Cursor;
+import android.support.v4.content.CursorLoader;
 import com.android.dialer.CallTypes;
 import com.android.dialer.calllog.database.contract.AnnotatedCallLogContract.CoalescedAnnotatedCallLog;
 import com.google.protobuf.InvalidProtocolBufferException;
diff --git a/java/com/android/dialer/calllog/ui/NewCallLogFragment.java b/java/com/android/dialer/calllog/ui/NewCallLogFragment.java
index 9227678..ab73813 100644
--- a/java/com/android/dialer/calllog/ui/NewCallLogFragment.java
+++ b/java/com/android/dialer/calllog/ui/NewCallLogFragment.java
@@ -15,11 +15,11 @@
  */
 package com.android.dialer.calllog.ui;
 
-import android.app.Fragment;
-import android.app.LoaderManager.LoaderCallbacks;
-import android.content.Loader;
 import android.database.Cursor;
 import android.os.Bundle;
+import android.support.v4.app.Fragment;
+import android.support.v4.app.LoaderManager.LoaderCallbacks;
+import android.support.v4.content.Loader;
 import android.support.v7.widget.LinearLayoutManager;
 import android.support.v7.widget.RecyclerView;
 import android.view.LayoutInflater;
@@ -65,6 +65,7 @@
     DialerExecutorFactory dialerExecutorFactory =
         DialerExecutorComponent.get(getContext()).dialerExecutorFactory();
 
+    // TODO(zachh): Use support fragment manager and add support for them in executors library.
     refreshAnnotatedCallLogTask =
         dialerExecutorFactory
             .createUiTaskBuilder(
@@ -138,6 +139,12 @@
   public void onLoadFinished(Loader<Cursor> loader, Cursor newCursor) {
     LogUtil.enterBlock("NewCallLogFragment.onLoadFinished");
 
+    if (newCursor == null) {
+      // This might be possible when the annotated call log hasn't been created but we're trying
+      // to show the call log.
+      LogUtil.w("NewCallLogFragment.onLoadFinished", "null cursor");
+      return;
+    }
     // TODO(zachh): Handle empty cursor by showing empty view.
     recyclerView.setLayoutManager(new LinearLayoutManager(getContext()));
     recyclerView.setAdapter(new NewCallLogAdapter(newCursor, System::currentTimeMillis));
diff --git a/java/com/android/dialer/main/impl/MainImpl.java b/java/com/android/dialer/main/impl/MainImpl.java
index d29e8c0..675533c 100644
--- a/java/com/android/dialer/main/impl/MainImpl.java
+++ b/java/com/android/dialer/main/impl/MainImpl.java
@@ -21,11 +21,11 @@
 import android.content.Context;
 import android.content.Intent;
 import android.content.pm.PackageManager;
+import android.os.Build;
 import android.os.Build.VERSION_CODES;
 import android.support.v4.content.pm.ShortcutInfoCompat;
 import android.support.v4.content.pm.ShortcutManagerCompat;
 import android.support.v4.graphics.drawable.IconCompat;
-import android.support.v4.os.BuildCompat;
 import com.android.dialer.buildtype.BuildType;
 import com.android.dialer.common.LogUtil;
 import com.android.dialer.main.Main;
@@ -36,7 +36,7 @@
   private static final String SHORTCUT_KEY = "nui_launcher_shortcut";
 
   @Inject
-  public MainImpl() {}
+  MainImpl() {}
 
   @Override
   public boolean isNewUiEnabled(Context context) {
@@ -46,7 +46,7 @@
   @Override
   public void createNewUiLauncherShortcut(Context context) {
     enableComponent(context);
-    if (BuildCompat.isAtLeastO()) {
+    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
       createLauncherShortcutO(context);
     } else {
       createLauncherShortcutPreO(context);
diff --git a/java/com/android/dialer/main/impl/MainPagerAdapter.java b/java/com/android/dialer/main/impl/MainPagerAdapter.java
index 33d85ca..10256a1 100644
--- a/java/com/android/dialer/main/impl/MainPagerAdapter.java
+++ b/java/com/android/dialer/main/impl/MainPagerAdapter.java
@@ -21,6 +21,7 @@
 import android.support.v4.app.Fragment;
 import android.support.v4.app.FragmentManager;
 import android.support.v4.app.FragmentStatePagerAdapter;
+import com.android.dialer.calllog.ui.NewCallLogFragment;
 import com.android.dialer.common.Assert;
 import com.android.dialer.voicemail.listui.VoicemailFragment;
 import java.lang.annotation.Retention;
@@ -60,6 +61,8 @@
     switch (position) {
       case TabIndex.VOICEMAIL:
         return new VoicemailFragment();
+      case TabIndex.HISTORY:
+        return new NewCallLogFragment();
       default:
         return new StubFragment();
     }
diff --git a/java/com/android/dialer/simulator/impl/SimulatorActionProvider.java b/java/com/android/dialer/simulator/impl/SimulatorActionProvider.java
index 9659113..f095a59 100644
--- a/java/com/android/dialer/simulator/impl/SimulatorActionProvider.java
+++ b/java/com/android/dialer/simulator/impl/SimulatorActionProvider.java
@@ -99,7 +99,7 @@
     subMenu
         .add("Clean database")
         .setOnMenuItemClickListener(
-            (itme) -> {
+            (item) -> {
               cleanDatabase();
               return true;
             });
