diff --git a/java/com/android/dialer/app/calllog/VisualVoicemailCallLogFragment.java b/java/com/android/dialer/app/calllog/VisualVoicemailCallLogFragment.java
index e83fcd4..8b50473 100644
--- a/java/com/android/dialer/app/calllog/VisualVoicemailCallLogFragment.java
+++ b/java/com/android/dialer/app/calllog/VisualVoicemailCallLogFragment.java
@@ -29,10 +29,10 @@
 import android.view.View;
 import android.view.ViewGroup;
 import com.android.dialer.app.R;
-import com.android.dialer.app.list.ListsFragment;
 import com.android.dialer.app.voicemail.VoicemailAudioManager;
 import com.android.dialer.app.voicemail.VoicemailErrorManager;
 import com.android.dialer.app.voicemail.VoicemailPlaybackPresenter;
+import com.android.dialer.common.FragmentUtils;
 import com.android.dialer.common.LogUtil;
 import com.android.dialer.common.concurrent.DialerExecutor;
 import com.android.dialer.common.concurrent.DialerExecutorComponent;
@@ -151,7 +151,7 @@
   @Override
   public void fetchCalls() {
     super.fetchCalls();
-    ((ListsFragment) getParentFragment()).updateTabUnreadCounts();
+    FragmentUtils.getParentUnsafe(this, CallLogFragmentListener.class).updateTabUnreadCounts();
   }
 
   @Override
diff --git a/java/com/android/dialer/app/voicemail/VoicemailPlaybackPresenter.java b/java/com/android/dialer/app/voicemail/VoicemailPlaybackPresenter.java
index e9b64df..3a77334 100644
--- a/java/com/android/dialer/app/voicemail/VoicemailPlaybackPresenter.java
+++ b/java/com/android/dialer/app/voicemail/VoicemailPlaybackPresenter.java
@@ -57,6 +57,7 @@
 import com.android.dialer.logging.DialerImpression;
 import com.android.dialer.logging.Logger;
 import com.android.dialer.phonenumbercache.CallLogQuery;
+import com.android.dialer.strictmode.StrictModeUtils;
 import com.android.dialer.telecom.TelecomUtil;
 import com.android.dialer.util.PermissionsUtil;
 import com.google.common.io.ByteStreams;
@@ -518,7 +519,10 @@
       handleError(new IllegalStateException("Cannot play voicemail when call is in progress"));
       return;
     }
+    StrictModeUtils.bypass(this::prepareMediaPlayer);
+  }
 
+  private void prepareMediaPlayer() {
     try {
       mediaPlayer = new MediaPlayer();
       mediaPlayer.setOnPreparedListener(this);
diff --git a/java/com/android/dialer/main/impl/MainActivity.java b/java/com/android/dialer/main/impl/MainActivity.java
index b94f075..fd32aa2 100644
--- a/java/com/android/dialer/main/impl/MainActivity.java
+++ b/java/com/android/dialer/main/impl/MainActivity.java
@@ -38,6 +38,7 @@
 import com.android.dialer.app.calllog.CallLogFragment;
 import com.android.dialer.app.calllog.CallLogFragment.CallLogFragmentListener;
 import com.android.dialer.app.calllog.CallLogNotificationsService;
+import com.android.dialer.app.calllog.VisualVoicemailCallLogFragment;
 import com.android.dialer.app.list.DragDropController;
 import com.android.dialer.app.list.OldSpeedDialFragment;
 import com.android.dialer.app.list.OnDragDropListener;
@@ -789,15 +790,30 @@
     @Override
     public void onVoicemailSelected() {
       hideAllFragments();
-      NewVoicemailFragment fragment =
-          (NewVoicemailFragment) supportFragmentManager.findFragmentByTag(VOICEMAIL_TAG);
-      if (fragment == null) {
-        supportFragmentManager
-            .beginTransaction()
-            .add(R.id.fragment_container, new NewVoicemailFragment(), VOICEMAIL_TAG)
-            .commit();
+      if (ConfigProviderComponent.get(context)
+          .getConfigProvider()
+          .getBoolean("enable_new_voicemail_fragment", false)) {
+        NewVoicemailFragment fragment =
+            (NewVoicemailFragment) supportFragmentManager.findFragmentByTag(VOICEMAIL_TAG);
+        if (fragment == null) {
+          supportFragmentManager
+              .beginTransaction()
+              .add(R.id.fragment_container, new NewVoicemailFragment(), VOICEMAIL_TAG)
+              .commit();
+        } else {
+          supportFragmentManager.beginTransaction().show(fragment).commit();
+        }
       } else {
-        supportFragmentManager.beginTransaction().show(fragment).commit();
+        VisualVoicemailCallLogFragment fragment =
+            (VisualVoicemailCallLogFragment) fragmentManager.findFragmentByTag(VOICEMAIL_TAG);
+        if (fragment == null) {
+          fragmentManager
+              .beginTransaction()
+              .add(R.id.fragment_container, new VisualVoicemailCallLogFragment(), VOICEMAIL_TAG)
+              .commit();
+        } else {
+          fragmentManager.beginTransaction().show(fragment).commit();
+        }
       }
     }
 
@@ -808,6 +824,7 @@
         supportTransaction.hide(supportFragmentManager.findFragmentByTag(CALL_LOG_TAG));
       }
       if (supportFragmentManager.findFragmentByTag(VOICEMAIL_TAG) != null) {
+        // NewVoicemailFragment
         supportTransaction.hide(supportFragmentManager.findFragmentByTag(VOICEMAIL_TAG));
       }
       supportTransaction.commit();
@@ -823,6 +840,10 @@
       if (fragmentManager.findFragmentByTag(CONTACTS_TAG) != null) {
         transaction.hide(fragmentManager.findFragmentByTag(CONTACTS_TAG));
       }
+      if (fragmentManager.findFragmentByTag(VOICEMAIL_TAG) != null) {
+        // Old VisualVoicemailFragment
+        transaction.hide(fragmentManager.findFragmentByTag(VOICEMAIL_TAG));
+      }
       transaction.commit();
     }
   }
