diff --git a/res/drawable/ic_nav_wallpaper.xml b/res/drawable/ic_nav_wallpaper.xml
deleted file mode 100644
index c935666..0000000
--- a/res/drawable/ic_nav_wallpaper.xml
+++ /dev/null
@@ -1,25 +0,0 @@
-<!--
-     Copyright (C) 2019 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
--->
-<!-- Represents the wallpaper icon (a "landscape" shape in a box) -->
-<vector xmlns:android="http://schemas.android.com/apk/res/android"
-    android:width="24dp"
-    android:height="24dp"
-    android:viewportWidth="24"
-    android:viewportHeight="24">
-    <path
-        android:fillColor="@android:color/white"
-        android:pathData="M9,12.71l2.14,2.58l3,-3.87L18,16.57H6L9,12.71zM5,5h6V3H5C3.9,3 3,3.9 3,5v6h2V5zM19,19h-6v2h6c1.1,0 2,-0.9 2,-2v-6h-2V19zM5,19v-6H3v6c0,1.1 0.9,2 2,2h6v-2H5zM19,5v6h2V5c0,-1.1 -0.9,-2 -2,-2h-6v2H19zM16,9c0.55,0 1,-0.45 1,-1s-0.45,-1 -1,-1c-0.55,0 -1,0.45 -1,1S15.45,9 16,9z"/>
-</vector>
diff --git a/res/values/dimens.xml b/res/values/dimens.xml
index 51ff6f1..193d6c3 100644
--- a/res/values/dimens.xml
+++ b/res/values/dimens.xml
@@ -120,12 +120,4 @@
     <dimen name="theme_info_app_preview_icon_margin">2dp</dimen>
     <dimen name="theme_info_app_preview_icon_elevation">2dp</dimen>
     <dimen name="theme_info_text_size">28sp</dimen>
-
-    <!-- Common dimensions for option sections -->
-    <dimen name="section_container_vertical_margin">24dp</dimen>
-    <dimen name="section_horizontal_padding">24dp</dimen>
-    <dimen name="section_vertical_padding">24dp</dimen>
-    <dimen name="section_top_padding">16dp</dimen>
-    <dimen name="section_bottom_padding">16dp</dimen>
-
 </resources>
diff --git a/src/com/android/customization/model/HubSectionController.java b/src/com/android/customization/model/HubSectionController.java
deleted file mode 100644
index 765e520..0000000
--- a/src/com/android/customization/model/HubSectionController.java
+++ /dev/null
@@ -1,60 +0,0 @@
-/*
- * Copyright (C) 2021 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package com.android.customization.model;
-
-import android.content.Context;
-import android.os.Bundle;
-
-import androidx.annotation.Nullable;
-import androidx.fragment.app.Fragment;
-
-import com.android.customization.picker.SectionView;
-
-/**
- * The interface for the behavior of section in the Customization hub.
- *
- * @param <T> the {@link SectionView} to create for the section
- */
-public interface HubSectionController<T extends SectionView> {
-
-    /** Interface for Customization hub section navigation. */
-    interface HubSectionNavigationController {
-        /** Navigates to the given {@code fragment}. */
-        void navigateTo(Fragment fragment);
-    }
-
-    /** Interface for Customization hub section's dark mode responding to battery saver. */
-    interface HubSectionBatterySaverListener {
-        /** Callback when battery saver's state changed with given {@code isEnabled}. */
-        void onBatterySaverStateChanged(boolean isEnabled);
-    }
-
-    /** Returns {@code true} if the Customization hub section is available. */
-    boolean isAvailable(@Nullable Context context);
-
-    /**
-     * Returns a newly created {@link SectionView} for the section.
-     *
-     * @param context the {@link Context} to inflate view
-     */
-    T createView(Context context);
-
-    /** Saves the view state for configuration changes. */
-    default void onSaveInstanceState(Bundle savedInstanceState) {}
-
-    /** Releases the controller. */
-    default void release() {}
-}
diff --git a/src/com/android/customization/model/grid/GridSectionController.java b/src/com/android/customization/model/grid/GridSectionController.java
index a84e878..a570565 100644
--- a/src/com/android/customization/model/grid/GridSectionController.java
+++ b/src/com/android/customization/model/grid/GridSectionController.java
@@ -24,10 +24,10 @@
 import androidx.annotation.Nullable;
 
 import com.android.customization.model.CustomizationManager.OptionsFetchedListener;
-import com.android.customization.model.HubSectionController;
 import com.android.customization.picker.grid.GridFragment;
 import com.android.customization.picker.grid.GridSectionView;
 import com.android.wallpaper.R;
+import com.android.wallpaper.model.HubSectionController;
 
 import java.util.List;
 
diff --git a/src/com/android/customization/model/mode/BatterySaverStateReceiver.java b/src/com/android/customization/model/mode/BatterySaverStateReceiver.java
index f3a9c05..803f722 100644
--- a/src/com/android/customization/model/mode/BatterySaverStateReceiver.java
+++ b/src/com/android/customization/model/mode/BatterySaverStateReceiver.java
@@ -23,7 +23,7 @@
 import android.os.PowerManager;
 import android.text.TextUtils;
 
-import com.android.customization.model.HubSectionController.HubSectionBatterySaverListener;
+import com.android.wallpaper.model.HubSectionController.HubSectionBatterySaverListener;
 
 /**
  * Broadcast receiver for getting battery saver state and callback to
diff --git a/src/com/android/customization/model/mode/ModeSection.java b/src/com/android/customization/model/mode/ModeSection.java
index 9dd4b65..493774d 100644
--- a/src/com/android/customization/model/mode/ModeSection.java
+++ b/src/com/android/customization/model/mode/ModeSection.java
@@ -34,10 +34,10 @@
 import androidx.lifecycle.LifecycleObserver;
 import androidx.lifecycle.OnLifecycleEvent;
 
-import com.android.customization.model.HubSectionController;
-import com.android.customization.model.HubSectionController.HubSectionBatterySaverListener;
 import com.android.customization.picker.mode.ModeSectionView;
 import com.android.wallpaper.R;
+import com.android.wallpaper.model.HubSectionController;
+import com.android.wallpaper.model.HubSectionController.HubSectionBatterySaverListener;
 
 /**
  * Section for dark theme toggle that controls if this section will be shown visually
diff --git a/src/com/android/customization/model/themedicon/ThemedIconSectionController.java b/src/com/android/customization/model/themedicon/ThemedIconSectionController.java
index 7b2d06a..20f3746 100644
--- a/src/com/android/customization/model/themedicon/ThemedIconSectionController.java
+++ b/src/com/android/customization/model/themedicon/ThemedIconSectionController.java
@@ -20,20 +20,21 @@
 
 import androidx.annotation.Nullable;
 
-import com.android.customization.model.HubSectionController;
 import com.android.customization.picker.themedicon.ThemedIconSectionView;
 import com.android.wallpaper.R;
+import com.android.wallpaper.model.HubSectionController;
+import com.android.wallpaper.model.WorkspaceViewModel;
 
 /** The {@link HubSectionController} for themed icon section. */
 public class ThemedIconSectionController implements HubSectionController<ThemedIconSectionView> {
 
     private final ThemedIconSwitchProvider mThemedIconOptionsProvider;
-    private final ThemedIconViewModel mThemedIconViewModel;
+    private final WorkspaceViewModel mWorkspaceViewModel;
 
     public ThemedIconSectionController(ThemedIconSwitchProvider themedIconOptionsProvider,
-            ThemedIconViewModel themedIconViewModel) {
+            WorkspaceViewModel workspaceViewModel) {
         mThemedIconOptionsProvider = themedIconOptionsProvider;
-        mThemedIconViewModel = themedIconViewModel;
+        mWorkspaceViewModel = workspaceViewModel;
     }
 
     @Override
@@ -57,6 +58,6 @@
             return;
         }
         mThemedIconOptionsProvider.setThemedIconEnabled(viewActivated);
-        mThemedIconViewModel.getThemedIconEnabled().setValue(viewActivated);
+        mWorkspaceViewModel.getUpdateWorkspace().setValue(viewActivated);
     }
 }
diff --git a/src/com/android/customization/model/themedicon/ThemedIconViewModel.kt b/src/com/android/customization/model/themedicon/ThemedIconViewModel.kt
deleted file mode 100644
index f8906ff..0000000
--- a/src/com/android/customization/model/themedicon/ThemedIconViewModel.kt
+++ /dev/null
@@ -1,32 +0,0 @@
-/*
- * Copyright (C) 2021 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package com.android.customization.model.themedicon
-
-import androidx.lifecycle.MutableLiveData
-import androidx.lifecycle.ViewModel
-
-/**
- * ViewModel class to keep track of themed icon
- */
-class ThemedIconViewModel : ViewModel() {
-
-    /**
-     * Flag for the themed icon enabled or not
-     */
-    val themedIconEnabled: MutableLiveData<Boolean> by lazy {
-        MutableLiveData<Boolean>()
-    }
-}
diff --git a/src/com/android/customization/picker/SectionView.java b/src/com/android/customization/picker/SectionView.java
deleted file mode 100644
index c1fd21a..0000000
--- a/src/com/android/customization/picker/SectionView.java
+++ /dev/null
@@ -1,54 +0,0 @@
-/*
- * Copyright (C) 2021 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package com.android.customization.picker;
-
-import android.content.Context;
-import android.util.AttributeSet;
-import android.widget.LinearLayout;
-
-import androidx.annotation.Nullable;
-
-/**
- * The SectionView base for views hosting in the {@link
- * com.android.customization.picker.hub.HubFragment}.
- */
-public abstract class SectionView extends LinearLayout {
-
-    /** The callback for the section view updates. */
-    public interface SectionViewListener {
-        void onViewActivated(@Nullable Context context, boolean viewActivated);
-    }
-
-    protected SectionViewListener mSectionViewListener;
-    private String mTitle;
-
-    public SectionView(Context context, @Nullable AttributeSet attrs) {
-        super(context, attrs);
-    }
-
-    public void setTitle(String title) {
-        mTitle = title;
-    }
-
-    public String getTitle() {
-        return mTitle;
-    }
-
-    /** Sets the listener to the {@code SectionView} instance for reacting the view changes. */
-    public void setViewListener(SectionViewListener sectionViewListener) {
-        mSectionViewListener = sectionViewListener;
-    }
-}
diff --git a/src/com/android/customization/picker/grid/GridSectionView.java b/src/com/android/customization/picker/grid/GridSectionView.java
index 12f7274..58468e1 100644
--- a/src/com/android/customization/picker/grid/GridSectionView.java
+++ b/src/com/android/customization/picker/grid/GridSectionView.java
@@ -20,7 +20,7 @@
 
 import androidx.annotation.Nullable;
 
-import com.android.customization.picker.SectionView;
+import com.android.wallpaper.picker.SectionView;
 
 /** The {@link SectionView} for app grid. */
 public final class GridSectionView extends SectionView {
diff --git a/src/com/android/customization/picker/mode/ModeSectionView.java b/src/com/android/customization/picker/mode/ModeSectionView.java
index 353579a..090dce1 100644
--- a/src/com/android/customization/picker/mode/ModeSectionView.java
+++ b/src/com/android/customization/picker/mode/ModeSectionView.java
@@ -22,8 +22,8 @@
 
 import androidx.annotation.Nullable;
 
-import com.android.customization.picker.SectionView;
 import com.android.wallpaper.R;
+import com.android.wallpaper.picker.SectionView;
 
 /**
  * The view of section in the Customization Hub fragment.
diff --git a/src/com/android/customization/picker/themedicon/ThemedIconSectionView.java b/src/com/android/customization/picker/themedicon/ThemedIconSectionView.java
index 1280106..3e03a41 100644
--- a/src/com/android/customization/picker/themedicon/ThemedIconSectionView.java
+++ b/src/com/android/customization/picker/themedicon/ThemedIconSectionView.java
@@ -21,8 +21,8 @@
 
 import androidx.annotation.Nullable;
 
-import com.android.customization.picker.SectionView;
 import com.android.wallpaper.R;
+import com.android.wallpaper.picker.SectionView;
 
 /**
  * The {@link SectionView} for themed icon section view
