diff --git a/res/layout/fragment_theme_picker.xml b/res/layout/fragment_theme_picker.xml
index 0fd4044..ef40334 100644
--- a/res/layout/fragment_theme_picker.xml
+++ b/res/layout/fragment_theme_picker.xml
@@ -46,6 +46,7 @@
             android:layout_width="match_parent"
             android:layout_height="wrap_content">
             <Button
+                android:id="@+id/apply_button"
                 style="@style/ActionPrimaryButton"
                 android:layout_width="wrap_content"
                 android:layout_height="wrap_content"
diff --git a/res/values/strings.xml b/res/values/strings.xml
index d87a354..7d94334 100755
--- a/res/values/strings.xml
+++ b/res/values/strings.xml
@@ -65,4 +65,7 @@
 
     <!--Title for a grid option, describing the number of columns and rows, eg: 4x4 [CHAR LIMIT=10] -->
     <string name="grid_title_pattern"><xliff:g name="num_cols" example="1">%1$d</xliff:g>x<xliff:g name="num_rows" example="1">%2$d</xliff:g></string>
+
+    <!-- Message shown when a theme has been applied successfully in the system [CHAR LIMIT=NONE] -->
+    <string name="applied_theme_msg">Theme has been applied</string>
 </resources>
diff --git a/src/com/android/customization/model/theme/DefaultThemeProvider.java b/src/com/android/customization/model/theme/DefaultThemeProvider.java
index 33e4ee4..4330ec6 100644
--- a/src/com/android/customization/model/theme/DefaultThemeProvider.java
+++ b/src/com/android/customization/model/theme/DefaultThemeProvider.java
@@ -163,7 +163,7 @@
      * the default theme.
      */
     private void addDefaultTheme() {
-        ThemeBundle.Builder builder = new Builder();
+        ThemeBundle.Builder builder = new Builder().asDefault();
         Resources system = Resources.getSystem();
 
         int titleId = mStubApkResources.getIdentifier(TITLE_PREFIX + DEFAULT_THEME_NAME,
diff --git a/src/com/android/customization/model/theme/ThemeBundle.java b/src/com/android/customization/model/theme/ThemeBundle.java
index 15b9efc..d95828b 100644
--- a/src/com/android/customization/model/theme/ThemeBundle.java
+++ b/src/com/android/customization/model/theme/ThemeBundle.java
@@ -36,6 +36,7 @@
 import com.android.wallpaper.R;
 
 import java.util.ArrayList;
+import java.util.Collections;
 import java.util.List;
 
 /**
@@ -45,13 +46,23 @@
  */
 public class ThemeBundle implements CustomizationOption {
 
-    static final String DEFAULT_PACKAGE = "DEFAULT_PACKAGE";
-
     private final String mTitle;
     private final PreviewInfo mPreviewInfo;
+    private final String mFontOverlayPackage;
+    private final String mColorOverlayPackage;
+    private final String mShapeOverlayPackage;
+    private final List<String> mIconOverlayPackages;
+    private final boolean mIsDefault;
 
-    private ThemeBundle(String title, PreviewInfo previewInfo) {
+    private ThemeBundle(String title, @Nullable String fontOverlayPackage,
+            @Nullable String colorOverlayPackage, @Nullable String shapeOverlayPackage,
+            List<String> iconOverlayPackages, boolean isDefault, PreviewInfo previewInfo) {
         mTitle = title;
+        mFontOverlayPackage = fontOverlayPackage;
+        mColorOverlayPackage = colorOverlayPackage;
+        mShapeOverlayPackage = shapeOverlayPackage;
+        mIconOverlayPackages = Collections.unmodifiableList(iconOverlayPackages);
+        mIsDefault = isDefault;
         mPreviewInfo = previewInfo;
     }
 
@@ -96,6 +107,26 @@
         return mPreviewInfo;
     }
 
+    String getFontOverlayPackage() {
+        return mFontOverlayPackage;
+    }
+
+    String getColorOverlayPackage() {
+        return mColorOverlayPackage;
+    }
+
+    String getShapeOverlayPackage() {
+        return mShapeOverlayPackage;
+    }
+
+    List<String> getIconOverlayPackages() {
+        return mIconOverlayPackages;
+    }
+
+    boolean isDefault() {
+        return mIsDefault;
+    }
+
     public static class PreviewInfo {
         public final Typeface bodyFontFamily;
         public final Typeface headlineFontFamily;
@@ -128,6 +159,7 @@
         @ColorInt private int mColorAccentDark;
         private List<Drawable> mIcons = new ArrayList<>();
         private String mShapePath;
+        private boolean mIsDefault;
         @DrawableRes private int mWallpaperDrawableResId;
 
         private String mFontOverlayPackage;
@@ -144,7 +176,8 @@
                 shapeDrawable.setIntrinsicHeight((int) PATH_SIZE);
                 shapeDrawable.setIntrinsicWidth((int) PATH_SIZE);
             }
-            return new ThemeBundle(mTitle,
+            return new ThemeBundle(mTitle, mFontOverlayPackage, mColorsPackage, mShapePackage,
+                    mIconPackages, mIsDefault,
                     new PreviewInfo(mBodyFontFamily, mHeadlineFontFamily, mColorAccentLight,
                             mColorAccentDark, mIcons, shapeDrawable, mWallpaperDrawableResId));
         }
@@ -203,5 +236,10 @@
             mShapePath = path;
             return this;
         }
+
+        public Builder asDefault() {
+            mIsDefault = true;
+            return this;
+        }
     }
 }
diff --git a/src/com/android/customization/model/theme/ThemeManager.java b/src/com/android/customization/model/theme/ThemeManager.java
index a07d808..e3e4119 100644
--- a/src/com/android/customization/model/theme/ThemeManager.java
+++ b/src/com/android/customization/model/theme/ThemeManager.java
@@ -15,14 +15,24 @@
  */
 package com.android.customization.model.theme;
 
+import android.content.Context;
+import android.content.om.OverlayManager;
+import android.os.UserHandle;
+
 import com.android.customization.model.CustomizationManager;
 
+import java.util.ArrayList;
+import java.util.List;
+
 public class ThemeManager implements CustomizationManager<ThemeBundle> {
 
     private final ThemeBundleProvider mProvider;
+    private final OverlayManager mOverlayManager;
+    private boolean useThemeWallpaper;
 
-    public ThemeManager(ThemeBundleProvider provider) {
+    public ThemeManager(ThemeBundleProvider provider, Context context) {
         mProvider = provider;
+        mOverlayManager = context.getSystemService(OverlayManager.class);
     }
 
     @Override
@@ -32,7 +42,19 @@
 
     @Override
     public void apply(ThemeBundle theme) {
-        // TODO(santie) implement
+        if (theme.isDefault()) {
+            // TODO: Clear secure setting
+        }
+        List<String> packages = new ArrayList<>();
+        packages.add(theme.getFontOverlayPackage());
+        packages.add(theme.getColorOverlayPackage());
+        packages.add(theme.getShapeOverlayPackage());
+        packages.addAll(theme.getIconOverlayPackages());
+        for (String packageName : packages) {
+            mOverlayManager.setEnabledExclusiveInCategory(packageName, UserHandle.myUserId());
+        }
+        // TODO: store to secure setting
+        // TODO: set wallpaper
     }
 
     @Override
diff --git a/src/com/android/customization/picker/CustomizationPickerActivity.java b/src/com/android/customization/picker/CustomizationPickerActivity.java
index ab60166..93339be 100644
--- a/src/com/android/customization/picker/CustomizationPickerActivity.java
+++ b/src/com/android/customization/picker/CustomizationPickerActivity.java
@@ -117,7 +117,7 @@
 
     private void initSections() {
         //Theme
-        ThemeManager themeManager = new ThemeManager(new DefaultThemeProvider(this));
+        ThemeManager themeManager = new ThemeManager(new DefaultThemeProvider(this), this);
         if (themeManager.isAvailable()) {
             mSections.put(R.id.nav_theme, new ThemeSection(R.id.nav_theme, themeManager));
         }
diff --git a/src/com/android/customization/picker/theme/ThemeFragment.java b/src/com/android/customization/picker/theme/ThemeFragment.java
index aad4542..3ca2a52 100644
--- a/src/com/android/customization/picker/theme/ThemeFragment.java
+++ b/src/com/android/customization/picker/theme/ThemeFragment.java
@@ -22,6 +22,7 @@
 import android.view.View;
 import android.view.ViewGroup;
 import android.widget.TextView;
+import android.widget.Toast;
 
 import androidx.annotation.ColorInt;
 import androidx.annotation.DrawableRes;
@@ -69,6 +70,11 @@
         setUpToolbar(view);
         mPreviewPager = view.findViewById(R.id.theme_preview_pager);
         mOptionsContainer = view.findViewById(R.id.options_container);
+        view.findViewById(R.id.apply_button).setOnClickListener(v -> {
+            mThemeManager.apply(mSelectedTheme);
+            Toast.makeText(getContext(), R.string.applied_theme_msg, Toast.LENGTH_LONG).show();
+            getActivity().finish();
+        });
         setUpOptions();
 
         return view;
