diff --git a/res/layout-land/folder_cling.xml b/res/layout-land/folder_cling.xml
index 171e395..1f4a115 100644
--- a/res/layout-land/folder_cling.xml
+++ b/res/layout-land/folder_cling.xml
@@ -20,39 +20,29 @@
     <FrameLayout
         android:layout_width="match_parent"
         android:layout_height="match_parent"
-        android:layout_marginStart="10dp"
-        android:layout_marginEnd="10dp"
-        android:layout_marginTop="40dp"
-        android:layout_marginBottom="20dp">
+        android:layout_marginStart="15dp"
+        android:layout_marginEnd="15dp"
+        android:layout_marginTop="10dp"
+        android:layout_marginBottom="10dp">
         <LinearLayout
             android:layout_width="match_parent"
             android:layout_height="wrap_content"
-            android:orientation="vertical">
-            <LinearLayout
+            android:paddingLeft="20dp"
+            android:paddingRight="20dp"
+            android:paddingTop="20dp"
+            android:paddingBottom="20dp"
+            android:orientation="vertical"
+            android:background="@drawable/cling">
+            <TextView
+                style="@style/ClingTitleText"
+                android:id="@+id/folder_cling_title"
+                android:text="@string/folder_cling_title" />
+            <TextView
+                style="@style/ClingText"
+                android:id="@+id/folder_cling_create_folder"
                 android:layout_width="match_parent"
                 android:layout_height="wrap_content"
-                android:paddingLeft="20dp"
-                android:paddingRight="20dp"
-                android:paddingTop="20dp"
-                android:paddingBottom="20dp"
-                android:orientation="vertical"
-                android:background="@drawable/cling">
-                <TextView
-                    style="@style/ClingTitleText"
-                    android:id="@+id/folder_cling_title"
-                    android:text="@string/folder_cling_title" />
-                <TextView
-                    style="@style/ClingText"
-                    android:id="@+id/folder_cling_create_folder"
-                    android:layout_width="match_parent"
-                    android:layout_height="wrap_content"
-                    android:text="@string/folder_cling_create_folder" />
-            </LinearLayout>
-            <ImageView
-                android:layout_width="wrap_content"
-                android:layout_height="wrap_content"
-                android:layout_gravity="center_horizontal"
-                android:src="@drawable/cling_arrow_down" />
+                android:text="@string/folder_cling_create_folder" />
         </LinearLayout>
     </FrameLayout>
     <Button
diff --git a/res/layout-land/launcher.xml b/res/layout-land/launcher.xml
index 2b9a9f3..86fc1ed 100644
--- a/res/layout-land/launcher.xml
+++ b/res/layout-land/launcher.xml
@@ -57,6 +57,11 @@
         <!-- The Workspace cling must appear under the AppsCustomizePagedView below to ensure
              that it is still visible during the transition to AllApps and doesn't overlay on
              top of that view. -->
+        <FrameLayout
+            android:id="@+id/cling_scrim"
+            android:layout_width="match_parent"
+            android:layout_height="match_parent"
+            android:visibility="gone" />
         <include layout="@layout/first_run_cling"
             android:id="@+id/first_run_cling"
             android:layout_width="match_parent"
diff --git a/res/layout-port/folder_cling.xml b/res/layout-port/folder_cling.xml
index bd4b5e2..1f4a115 100644
--- a/res/layout-port/folder_cling.xml
+++ b/res/layout-port/folder_cling.xml
@@ -20,39 +20,29 @@
     <FrameLayout
         android:layout_width="match_parent"
         android:layout_height="match_parent"
-        android:layout_marginStart="20dp"
-        android:layout_marginEnd="20dp"
+        android:layout_marginStart="15dp"
+        android:layout_marginEnd="15dp"
         android:layout_marginTop="10dp"
         android:layout_marginBottom="10dp">
         <LinearLayout
             android:layout_width="match_parent"
             android:layout_height="wrap_content"
-            android:orientation="vertical">
-            <LinearLayout
+            android:paddingLeft="20dp"
+            android:paddingRight="20dp"
+            android:paddingTop="20dp"
+            android:paddingBottom="20dp"
+            android:orientation="vertical"
+            android:background="@drawable/cling">
+            <TextView
+                style="@style/ClingTitleText"
+                android:id="@+id/folder_cling_title"
+                android:text="@string/folder_cling_title" />
+            <TextView
+                style="@style/ClingText"
+                android:id="@+id/folder_cling_create_folder"
                 android:layout_width="match_parent"
                 android:layout_height="wrap_content"
-                android:paddingLeft="20dp"
-                android:paddingRight="20dp"
-                android:paddingTop="20dp"
-                android:paddingBottom="20dp"
-                android:orientation="vertical"
-                android:background="@drawable/cling">
-                <TextView
-                    style="@style/ClingTitleText"
-                    android:id="@+id/folder_cling_title"
-                    android:text="@string/folder_cling_title" />
-                <TextView
-                    style="@style/ClingText"
-                    android:id="@+id/folder_cling_create_folder"
-                    android:layout_width="match_parent"
-                    android:layout_height="wrap_content"
-                    android:text="@string/folder_cling_create_folder" />
-            </LinearLayout>
-            <ImageView
-                android:layout_width="wrap_content"
-                android:layout_height="wrap_content"
-                android:layout_gravity="center_horizontal"
-                android:src="@drawable/cling_arrow_down" />
+                android:text="@string/folder_cling_create_folder" />
         </LinearLayout>
     </FrameLayout>
     <Button
diff --git a/res/layout-port/launcher.xml b/res/layout-port/launcher.xml
index faef7a5..ef2f3ac 100644
--- a/res/layout-port/launcher.xml
+++ b/res/layout-port/launcher.xml
@@ -64,6 +64,11 @@
         <!-- The Workspace cling must appear under the AppsCustomizePagedView below to ensure
              that it is still visible during the transition to AllApps and doesn't overlay on
              top of that view. -->
+        <FrameLayout
+            android:id="@+id/cling_scrim"
+            android:layout_width="match_parent"
+            android:layout_height="match_parent"
+            android:visibility="gone" />
         <include layout="@layout/first_run_cling"
             android:id="@+id/first_run_cling"
             android:layout_width="match_parent"
@@ -74,7 +79,6 @@
             android:layout_width="match_parent"
             android:layout_height="match_parent"
             android:visibility="gone" />
-
         <include layout="@layout/folder_cling"
             android:id="@+id/folder_cling"
             android:layout_width="match_parent"
diff --git a/res/values/colors.xml b/res/values/colors.xml
index 43a856d..e4278d9 100644
--- a/res/values/colors.xml
+++ b/res/values/colors.xml
@@ -36,5 +36,5 @@
     <color name="folder_items_text_color">#FF333333</color>
     <color name="outline_color">#FFFFFFFF</color>
     
-    <color name="first_run_cling_circle_background_color">#FF83AEE8</color>
+    <color name="first_run_cling_circle_background_color">#FF8BB4E9</color>
 </resources>
diff --git a/res/values/strings.xml b/res/values/strings.xml
index 6c05f7d..ac372fd 100644
--- a/res/values/strings.xml
+++ b/res/values/strings.xml
@@ -228,7 +228,7 @@
     <!-- The title text for the workspace cling [CHAR_LIMIT=none] -->
     <string name="first_run_cling_title">Welcome!</string>
     <!-- The description of how to use the workspace [CHAR_LIMIT=none] -->
-    <string name="first_run_cling_description">Make yourself at Home</string>
+    <string name="first_run_cling_description">Make yourself at Home.</string>
     <!-- The description of how to use the workspace [CHAR_LIMIT=none] -->
     <string name="first_run_cling_custom_content_hint"></string>
     <!-- The description of how to use the workspace [CHAR_LIMIT=none] -->
@@ -238,15 +238,15 @@
     <!-- The title text for the workspace cling [CHAR_LIMIT=none] -->
     <string name="workspace_cling_title">Organize your space</string>
     <!-- The description of how to use the workspace [CHAR_LIMIT=none] -->
-    <string name="workspace_cling_move_item">Touch &amp; hold background to manage wallpaper, widgets and settings</string>
+    <string name="workspace_cling_move_item">Touch &amp; hold background to manage wallpaper, widgets and settings.</string>
     <!-- The title text for the All Apps cling [CHAR_LIMIT=none] -->
     <string name="all_apps_cling_title">Choose some apps</string>
     <!-- The description of how to pick up and add an item to the workspace [CHAR_LIMIT=none] -->
     <string name="all_apps_cling_add_item">To add an app to your Home screen, touch &amp; hold it.</string>
     <!-- The title text for the Folder cling [CHAR_LIMIT=none] -->
-    <string name="folder_cling_title">Create new folders for your apps</string>
+    <string name="folder_cling_title">Here\'s a folder</string>
     <!-- The description of how to create a folder [CHAR_LIMIT=none] -->
-    <string name="folder_cling_create_folder">Touch &amp; hold an app, then move it on top of another app icon</string>
+    <string name="folder_cling_create_folder">To create one like this, touch &amp; hold an app, then move it over another.</string>
     <!-- The text on the button to dismiss a cling [CHAR_LIMIT=none] -->
     <string name="cling_dismiss">OK</string>
     <!-- Error message on dummy custom cling layout [DO NOT TRANSLATE] -->
diff --git a/src/com/android/launcher3/Cling.java b/src/com/android/launcher3/Cling.java
index 7ca6990..2656ad6 100644
--- a/src/com/android/launcher3/Cling.java
+++ b/src/com/android/launcher3/Cling.java
@@ -70,6 +70,9 @@
     private Paint mBubblePaint;
     private Paint mDotPaint;
 
+    private View mScrimView;
+    private int mBackgroundColor;
+
     private final Rect mInsets = new Rect();
 
     public Cling(Context context) {
@@ -91,9 +94,11 @@
 
     }
 
-    void init(Launcher l, int[] positionData) {
+    void init(Launcher l, View scrim) {
         if (!mIsInitialized) {
             mLauncher = l;
+            mScrimView = scrim;
+            mBackgroundColor = 0xdd000000;
             setOnLongClickListener(this);
 
             mErasePaint = new Paint();
@@ -128,10 +133,7 @@
             content.animate()
                     .alpha(1f)
                     .setDuration(duration)
-                    .setListener(new AnimatorListenerAdapter() {
-                        public void onAnimationEnd(Animator animation) {
-                        };
-                    })
+                    .setListener(null)
                     .start();
             setAlpha(1f);
         } else {
@@ -142,11 +144,24 @@
                     .alpha(1f)
                     .setInterpolator(new AccelerateInterpolator())
                     .setDuration(duration)
+                    .setListener(null)
                     .start();
             } else {
                 setAlpha(1f);
             }
         }
+
+        // Show the scrim if necessary
+        if (mScrimView != null) {
+            mScrimView.setVisibility(View.VISIBLE);
+            mScrimView.setAlpha(0f);
+            mScrimView.animate()
+                    .alpha(1f)
+                    .setDuration(duration)
+                    .setListener(null)
+                    .start();
+        }
+
         setFocusableInTouchMode(true);
         post(new Runnable() {
             public void run() {
@@ -160,26 +175,42 @@
         if (mDrawIdentifier.equals(FIRST_RUN_PORTRAIT) ||
                 mDrawIdentifier.equals(FIRST_RUN_LANDSCAPE)) {
             View content = getContent();
-            ObjectAnimator anim = LauncherAnimUtils.ofFloat(content, "alpha", 0f);
-            anim.setDuration(duration);
-            anim.addListener(new AnimatorListenerAdapter() {
-                public void onAnimationEnd(Animator animation) {
-                    // We are about to trigger the workspace cling, so don't do anything else
-                    setVisibility(View.GONE);
-                    postCb.run();
-                };
-            });
-            anim.start();
+            content.animate()
+                .alpha(0f)
+                .setDuration(duration)
+                .setListener(new AnimatorListenerAdapter() {
+                    public void onAnimationEnd(Animator animation) {
+                        // We are about to trigger the workspace cling, so don't do anything else
+                        setVisibility(View.GONE);
+                        postCb.run();
+                    };
+                })
+                .start();
         } else {
-            ObjectAnimator anim = LauncherAnimUtils.ofFloat(this, "alpha", 0f);
-            anim.setDuration(duration);
-            anim.addListener(new AnimatorListenerAdapter() {
-                public void onAnimationEnd(Animator animation) {
-                    setVisibility(View.GONE);
-                    postCb.run();
-                };
-            });
-            anim.start();
+            animate()
+                .alpha(0f)
+                .setDuration(duration)
+                .setListener(new AnimatorListenerAdapter() {
+                    public void onAnimationEnd(Animator animation) {
+                        // We are about to trigger the workspace cling, so don't do anything else
+                        setVisibility(View.GONE);
+                        postCb.run();
+                    };
+                })
+                .start();
+        }
+
+        // Show the scrim if necessary
+        if (mScrimView != null) {
+            mScrimView.animate()
+                .alpha(0f)
+                .setDuration(duration)
+                .setListener(new AnimatorListenerAdapter() {
+                    public void onAnimationEnd(Animator animation) {
+                        mScrimView.setVisibility(View.GONE);
+                    };
+                })
+                .start();
         }
     }
 
@@ -188,6 +219,12 @@
         mIsInitialized = false;
     }
 
+    void bringScrimToFront() {
+        if (mScrimView != null) {
+            mScrimView.bringToFront();
+        }
+    }
+
     @Override
     public void setInsets(Rect insets) {
         mInsets.set(insets);
@@ -262,13 +299,12 @@
             // Draw the background
             Bitmap eraseBg = null;
             Canvas eraseCanvas = null;
-            if (mBackground != null) {
+            if (mScrimView != null) {
+                // Skip drawing the background
+                mScrimView.setBackgroundColor(mBackgroundColor);
+            } else if (mBackground != null) {
                 mBackground.setBounds(0, 0, getMeasuredWidth(), getMeasuredHeight());
                 mBackground.draw(canvas);
-            } else if (mDrawIdentifier.equals(FOLDER_PORTRAIT) ||
-                    mDrawIdentifier.equals(FOLDER_LANDSCAPE) ||
-                    mDrawIdentifier.equals(FOLDER_LARGE)) {
-                canvas.drawColor(0xcc000000);
             } else if (mDrawIdentifier.equals(WORKSPACE_PORTRAIT) ||
                     mDrawIdentifier.equals(WORKSPACE_LANDSCAPE) ||
                     mDrawIdentifier.equals(WORKSPACE_LARGE)) {
@@ -276,9 +312,9 @@
                 eraseBg = Bitmap.createBitmap(getMeasuredWidth(), getMeasuredHeight(),
                         Bitmap.Config.ARGB_8888);
                 eraseCanvas = new Canvas(eraseBg);
-                eraseCanvas.drawColor(0xdd000000);
+                eraseCanvas.drawColor(mBackgroundColor);
             } else {
-                canvas.drawColor(0xdd000000);
+                canvas.drawColor(mBackgroundColor);
             }
 
             // Draw everything else
diff --git a/src/com/android/launcher3/Folder.java b/src/com/android/launcher3/Folder.java
index a71d9b2..a4cb117 100644
--- a/src/com/android/launcher3/Folder.java
+++ b/src/com/android/launcher3/Folder.java
@@ -453,8 +453,9 @@
                 setLayerType(LAYER_TYPE_NONE, null);
                 Cling cling = mLauncher.showFirstRunFoldersCling();
                 if (cling != null) {
-                    cling.bringToFront();
+                    cling.bringScrimToFront();
                     bringToFront();
+                    cling.bringToFront();
                 }
                 setFocusOnFirstChild();
             }
diff --git a/src/com/android/launcher3/Launcher.java b/src/com/android/launcher3/Launcher.java
index 149a523..63168a3 100644
--- a/src/com/android/launcher3/Launcher.java
+++ b/src/com/android/launcher3/Launcher.java
@@ -274,7 +274,7 @@
     private boolean mUserPresent = true;
     private boolean mVisible = false;
     private boolean mAttached = false;
-    private static final boolean DISABLE_CLINGS = true;
+    private static final boolean DISABLE_CLINGS = false;
     private static final boolean DISABLE_CUSTOM_CLINGS = true;
 
     private static LocaleConfiguration sLocaleConfiguration = null;
@@ -4064,11 +4064,15 @@
         return true;
     }
 
-    private Cling initCling(int clingId, int[] positionData, boolean animate,
+    private Cling initCling(int clingId, int scrimId, boolean animate,
                             boolean dimNavBarVisibilty) {
-        final Cling cling = (Cling) findViewById(clingId);
+        Cling cling = (Cling) findViewById(clingId);
+        View scrim = null;
+        if (scrimId > 0) {
+            scrim = findViewById(R.id.scrim);
+        }
         if (cling != null) {
-            cling.init(this, positionData);
+            cling.init(this, scrim);
             cling.show(animate, SHOW_CLING_DURATION);
 
             if (dimNavBarVisibilty) {
@@ -4087,7 +4091,6 @@
             final Runnable cleanUpClingCb = new Runnable() {
                 public void run() {
                     cling.cleanup();
-                    /*
                     // We should update the shared preferences on a background thread
                     new Thread("dismissClingThread") {
                         public void run() {
@@ -4096,7 +4099,6 @@
                             editor.commit();
                         }
                     }.start();
-                    */
                     if (postAnimationCb != null) {
                         postAnimationCb.run();
                     }
@@ -4177,7 +4179,7 @@
                     ccHint.setVisibility(View.VISIBLE);
                 }
             }
-            initCling(R.id.first_run_cling, null, false, true);
+            initCling(R.id.first_run_cling, 0, false, true);
         } else {
             removeCling(R.id.first_run_cling);
         }
@@ -4194,7 +4196,7 @@
         // Enable the clings only if they have not been dismissed before
         if (isClingsEnabled() &&
                 !mSharedPrefs.getBoolean(Cling.WORKSPACE_CLING_DISMISSED_KEY, false)) {
-            initCling(R.id.workspace_cling, null, false, true);
+            initCling(R.id.workspace_cling, 0, false, true);
         } else {
             removeCling(R.id.workspace_cling);
         }
@@ -4203,7 +4205,8 @@
         // Enable the clings only if they have not been dismissed before
         if (isClingsEnabled() &&
                 !mSharedPrefs.getBoolean(Cling.FOLDER_CLING_DISMISSED_KEY, false)) {
-            Cling cling = initCling(R.id.folder_cling, null, true, true);
+            Cling cling = initCling(R.id.folder_cling, R.id.cling_scrim,
+                    true, true);
             return cling;
         } else {
             removeCling(R.id.folder_cling);
