diff --git a/go/quickstep/src/com/android/launcher3/uioverrides/RecentsUiFactory.java b/go/quickstep/src/com/android/launcher3/uioverrides/RecentsUiFactory.java
index 73075dc..d0c255c 100644
--- a/go/quickstep/src/com/android/launcher3/uioverrides/RecentsUiFactory.java
+++ b/go/quickstep/src/com/android/launcher3/uioverrides/RecentsUiFactory.java
@@ -22,8 +22,6 @@
 
 import android.view.View;
 
-import androidx.annotation.Nullable;
-
 import com.android.launcher3.Launcher;
 import com.android.launcher3.LauncherStateManager.StateHandler;
 import com.android.launcher3.util.TouchController;
@@ -44,25 +42,12 @@
      * @param launcher the launcher activity
      * @return the touch controller for recents tasks
      */
-    public static @Nullable TouchController createTaskSwipeController(Launcher launcher) {
+    public static TouchController createTaskSwipeController(Launcher launcher) {
         // We leave all input handling to the view itself.
         return null;
     }
 
     /**
-     * Creates and returns a touch controller for swiping from overview state to the all apps state
-     * if such an action is supported.
-     *
-     * @param launcher the launcher activity
-     * @return the touch controller for swiping from overview to all apps
-     */
-    public static @Nullable TouchController createOverviewToAllAppsTouchController(
-            Launcher launcher) {
-        // Go does not support overview to all apps transition.
-        return null;
-    }
-
-    /**
      * Creates and returns the controller responsible for recents view state transitions.
      *
      * @param launcher the launcher activity
diff --git a/quickstep/recents_ui_overrides/src/com/android/launcher3/uioverrides/RecentsUiFactory.java b/quickstep/recents_ui_overrides/src/com/android/launcher3/uioverrides/RecentsUiFactory.java
index 0b62bee..f18f43c 100644
--- a/quickstep/recents_ui_overrides/src/com/android/launcher3/uioverrides/RecentsUiFactory.java
+++ b/quickstep/recents_ui_overrides/src/com/android/launcher3/uioverrides/RecentsUiFactory.java
@@ -22,14 +22,11 @@
 import static com.android.launcher3.LauncherState.NORMAL;
 import static com.android.launcher3.LauncherState.OVERVIEW;
 
-import androidx.annotation.Nullable;
-
 import com.android.launcher3.Launcher;
 import com.android.launcher3.LauncherState;
 import com.android.launcher3.LauncherStateManager.StateHandler;
 import com.android.launcher3.anim.AnimatorPlaybackController;
 import com.android.launcher3.util.TouchController;
-import com.android.quickstep.OverviewInteractionState;
 import com.android.quickstep.views.RecentsView;
 
 /**
@@ -48,28 +45,11 @@
      * @param launcher the launcher activity
      * @return the touch controller for recents tasks
      */
-    public static @Nullable TouchController createTaskSwipeController(Launcher launcher) {
+    public static TouchController createTaskSwipeController(Launcher launcher) {
         return new LauncherTaskViewController(launcher);
     }
 
     /**
-     * Creates and returns a touch controller for swiping from overview state to the all apps state
-     * if such an action is supported.
-     *
-     * @param launcher the launcher activity
-     * @return the touch controller for swiping from overview to all apps
-     */
-    public static @Nullable TouchController createOverviewToAllAppsTouchController(
-            Launcher launcher) {
-        boolean swipeUpEnabled = OverviewInteractionState.INSTANCE.get(launcher)
-                .isSwipeUpGestureEnabled();
-        if (!swipeUpEnabled || launcher.getDeviceProfile().isVerticalBarLayout()) {
-            return new OverviewToAllAppsTouchController(launcher);
-        }
-        return null;
-    }
-
-    /**
      * Creates and returns the controller responsible for recents view state transitions.
      *
      * @param launcher the launcher activity
diff --git a/quickstep/recents_ui_overrides/src/com/android/launcher3/uioverrides/OverviewToAllAppsTouchController.java b/quickstep/src/com/android/launcher3/uioverrides/OverviewToAllAppsTouchController.java
similarity index 100%
rename from quickstep/recents_ui_overrides/src/com/android/launcher3/uioverrides/OverviewToAllAppsTouchController.java
rename to quickstep/src/com/android/launcher3/uioverrides/OverviewToAllAppsTouchController.java
diff --git a/quickstep/src/com/android/launcher3/uioverrides/UiFactory.java b/quickstep/src/com/android/launcher3/uioverrides/UiFactory.java
index bc9069a..ff9d601 100644
--- a/quickstep/src/com/android/launcher3/uioverrides/UiFactory.java
+++ b/quickstep/src/com/android/launcher3/uioverrides/UiFactory.java
@@ -60,14 +60,15 @@
             WindowManagerWrapper.getInstance().setShelfHeight(visible != 0, height);
 
     public static TouchController[] createTouchControllers(Launcher launcher) {
+        boolean swipeUpEnabled = OverviewInteractionState.INSTANCE.get(launcher)
+                .isSwipeUpGestureEnabled();
         ArrayList<TouchController> list = new ArrayList<>();
         list.add(launcher.getDragController());
 
-        TouchController overviewToAllAppsController =
-                RecentsUiFactory.createOverviewToAllAppsTouchController(launcher);
-        if (overviewToAllAppsController != null) {
-            list.add(overviewToAllAppsController);
+        if (!swipeUpEnabled || launcher.getDeviceProfile().isVerticalBarLayout()) {
+            list.add(new OverviewToAllAppsTouchController(launcher));
         }
+
         if (launcher.getDeviceProfile().isVerticalBarLayout()) {
             list.add(new LandscapeEdgeSwipeController(launcher));
         } else {
