diff --git a/build/sdk.atree b/build/sdk.atree
index 8742b6a..ba7cb86 100644
--- a/build/sdk.atree
+++ b/build/sdk.atree
@@ -170,7 +170,8 @@
 development/samples/NotePad                    samples/${PLATFORM_NAME}/NotePad
 development/samples/NFCDemo                    samples/${PLATFORM_NAME}/NFCDemo
 development/samples/RandomMusicPlayer          samples/${PLATFORM_NAME}/RandomMusicPlayer
-development/samples/SampleSpellCheckerService  samples/${PLATFORM_NAME}/SampleSpellCheckerService
+development/samples/SpellChecker/SampleSpellCheckerService samples/${PLATFORM_NAME}/SpellChecker/SampleSpellCheckerService
+development/samples/SpellChecker/HelloSpellChecker samples/${PLATFORM_NAME}/SpellChecker/HelloSpellChecker
 development/samples/SampleSyncAdapter          samples/${PLATFORM_NAME}/SampleSyncAdapter
 development/samples/SearchableDictionary       samples/${PLATFORM_NAME}/SearchableDictionary
 development/samples/SipDemo                    samples/${PLATFORM_NAME}/SipDemo
diff --git a/samples/SpellChecker/Android.mk b/samples/SpellChecker/Android.mk
new file mode 100644
index 0000000..5053e7d
--- /dev/null
+++ b/samples/SpellChecker/Android.mk
@@ -0,0 +1 @@
+include $(call all-subdir-makefiles)
diff --git a/samples/SpellChecker/HelloSpellChecker/Android.mk b/samples/SpellChecker/HelloSpellChecker/Android.mk
new file mode 100755
index 0000000..1c76f23
--- /dev/null
+++ b/samples/SpellChecker/HelloSpellChecker/Android.mk
@@ -0,0 +1,12 @@
+LOCAL_PATH:= $(call my-dir)
+include $(CLEAR_VARS)
+
+LOCAL_MODULE_TAGS := samples
+
+LOCAL_SRC_FILES := $(call all-subdir-java-files)
+
+LOCAL_SDK_VERSION := current
+
+LOCAL_PACKAGE_NAME := HelloSpellChecker
+
+include $(BUILD_PACKAGE)
diff --git a/samples/SpellChecker/HelloSpellChecker/AndroidManifest.xml b/samples/SpellChecker/HelloSpellChecker/AndroidManifest.xml
new file mode 100644
index 0000000..0a6b906
--- /dev/null
+++ b/samples/SpellChecker/HelloSpellChecker/AndroidManifest.xml
@@ -0,0 +1,39 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+/**
+ * Copyright (c) 2011, 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.
+ */
+-->
+<manifest xmlns:android="http://schemas.android.com/apk/res/android"
+    package="com.example.android.hellospellchecker"
+    android:versionCode="1"
+    android:versionName="1.0" >
+
+    <uses-sdk android:minSdkVersion="14" />
+
+    <application
+        android:label="@string/app_name" >
+        <activity
+            android:label="@string/app_name"
+            android:name=".HelloSpellCheckerActivity" >
+            <intent-filter >
+                <action android:name="android.intent.action.MAIN" />
+
+                <category android:name="android.intent.category.LAUNCHER" />
+            </intent-filter>
+        </activity>
+    </application>
+
+</manifest>
diff --git a/samples/SpellChecker/HelloSpellChecker/_index.html b/samples/SpellChecker/HelloSpellChecker/_index.html
new file mode 100755
index 0000000..414c629
--- /dev/null
+++ b/samples/SpellChecker/HelloSpellChecker/_index.html
@@ -0,0 +1,5 @@
+<p>A simple activity that requests spelling suggestions from a spell checker service, using the <code><a
+href="../../../reference/android/view/textservice/TextServicesManager.html">TextServicesManager</a></code>
+and <code><a href="../../../reference/android/view/textservice/SpellCheckerSession.html">SpellCheckerSession</a></code>
+APIs introduced in Android 4.0 (API level 14).</p>
+<p>For an example that implements a custom spell checker service, see the <a href="../SampleSpellCheckerService/index.html">Spell Checker</a> sample app.</p>
diff --git a/samples/SpellChecker/HelloSpellChecker/res/layout/main.xml b/samples/SpellChecker/HelloSpellChecker/res/layout/main.xml
new file mode 100644
index 0000000..3d443e4
--- /dev/null
+++ b/samples/SpellChecker/HelloSpellChecker/res/layout/main.xml
@@ -0,0 +1,29 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+/**
+ * Copyright (c) 2011, 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.
+ */
+-->
+<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
+    android:layout_width="fill_parent"
+    android:layout_height="fill_parent"
+    android:orientation="vertical" >
+
+    <TextView
+        android:id="@+id/main"
+        android:layout_width="fill_parent"
+        android:layout_height="wrap_content" />
+
+</LinearLayout>
diff --git a/samples/SpellChecker/HelloSpellChecker/res/values/strings.xml b/samples/SpellChecker/HelloSpellChecker/res/values/strings.xml
new file mode 100644
index 0000000..fbcb2db
--- /dev/null
+++ b/samples/SpellChecker/HelloSpellChecker/res/values/strings.xml
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+/**
+ * Copyright (c) 2011, 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.
+ */
+-->
+<resources>
+
+    <string name="app_name">HelloSpellChecker</string>
+
+</resources>
diff --git a/samples/SpellChecker/HelloSpellChecker/src/com/example/android/hellospellchecker/HelloSpellCheckerActivity.java b/samples/SpellChecker/HelloSpellChecker/src/com/example/android/hellospellchecker/HelloSpellCheckerActivity.java
new file mode 100644
index 0000000..6550981
--- /dev/null
+++ b/samples/SpellChecker/HelloSpellChecker/src/com/example/android/hellospellchecker/HelloSpellCheckerActivity.java
@@ -0,0 +1,87 @@
+/*
+ * Copyright (C) 2011 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.example.android.hellospellchecker;
+
+import android.app.Activity;
+import android.content.Context;
+import android.os.Bundle;
+import android.util.Log;
+import android.view.textservice.SpellCheckerSession;
+import android.view.textservice.SuggestionsInfo;
+import android.view.textservice.TextInfo;
+import android.view.textservice.TextServicesManager;
+import android.view.textservice.SpellCheckerSession.SpellCheckerSessionListener;
+import android.widget.TextView;
+import java.lang.StringBuilder;
+
+public class HelloSpellCheckerActivity extends Activity implements SpellCheckerSessionListener {
+    private static final String TAG = HelloSpellCheckerActivity.class.getSimpleName();
+    private TextView mMainView;
+    private SpellCheckerSession mScs;
+    /** Called when the activity is first created. */
+    @Override
+    public void onCreate(Bundle savedInstanceState) {
+        super.onCreate(savedInstanceState);
+        setContentView(R.layout.main);
+        mMainView = (TextView)findViewById(R.id.main);
+    }
+
+    @Override
+    public void onResume() {
+        super.onResume();
+        final TextServicesManager tsm = (TextServicesManager) getSystemService(
+                Context.TEXT_SERVICES_MANAGER_SERVICE);
+        mScs = tsm.newSpellCheckerSession(null, null, this, true);
+        if (mScs != null) {
+            // Instantiate TextInfo for each query
+            // TextInfo can be passed a sequence number and a cookie number to identify the result
+            mScs.getSuggestions(new TextInfo("tgis"), 3);
+            mScs.getSuggestions(new TextInfo("hllo"), 3);
+            mScs.getSuggestions(new TextInfo("helloworld"), 3);
+        } else {
+            Log.e(TAG, "Couldn't obtain the spell checker service.");
+        }
+    }
+
+    @Override
+    public void onPause() {
+        super.onPause();
+        if (mScs != null) {
+            mScs.close();
+        }
+    }
+
+    @Override
+    public void onGetSuggestions(final SuggestionsInfo[] arg0) {
+        final StringBuilder sb = new StringBuilder();
+        for (int i = 0; i < arg0.length; ++i) {
+            // Returned suggestions are contained in SuggestionsInfo
+            final int len = arg0[i].getSuggestionsCount();
+            sb.append('\n');
+            for (int j = 0; j < len; ++j) {
+                sb.append("," + arg0[i].getSuggestionAt(j));
+            }
+            sb.append(" (" + len + ")");
+        }
+        runOnUiThread(new Runnable() {
+            @Override
+            public void run() {
+                mMainView.append(sb.toString());
+            }
+        });
+    }
+}
diff --git a/samples/SampleSpellCheckerService/Android.mk b/samples/SpellChecker/SampleSpellCheckerService/Android.mk
similarity index 100%
rename from samples/SampleSpellCheckerService/Android.mk
rename to samples/SpellChecker/SampleSpellCheckerService/Android.mk
diff --git a/samples/SampleSpellCheckerService/AndroidManifest.xml b/samples/SpellChecker/SampleSpellCheckerService/AndroidManifest.xml
similarity index 100%
rename from samples/SampleSpellCheckerService/AndroidManifest.xml
rename to samples/SpellChecker/SampleSpellCheckerService/AndroidManifest.xml
diff --git a/samples/SampleSpellCheckerService/_index.html b/samples/SpellChecker/SampleSpellCheckerService/_index.html
similarity index 100%
rename from samples/SampleSpellCheckerService/_index.html
rename to samples/SpellChecker/SampleSpellCheckerService/_index.html
diff --git a/samples/SampleSpellCheckerService/res/values/strings.xml b/samples/SpellChecker/SampleSpellCheckerService/res/values/strings.xml
similarity index 100%
rename from samples/SampleSpellCheckerService/res/values/strings.xml
rename to samples/SpellChecker/SampleSpellCheckerService/res/values/strings.xml
diff --git a/samples/SampleSpellCheckerService/res/xml/spell_checker_settings.xml b/samples/SpellChecker/SampleSpellCheckerService/res/xml/spell_checker_settings.xml
similarity index 100%
rename from samples/SampleSpellCheckerService/res/xml/spell_checker_settings.xml
rename to samples/SpellChecker/SampleSpellCheckerService/res/xml/spell_checker_settings.xml
diff --git a/samples/SampleSpellCheckerService/res/xml/spellchecker.xml b/samples/SpellChecker/SampleSpellCheckerService/res/xml/spellchecker.xml
similarity index 100%
rename from samples/SampleSpellCheckerService/res/xml/spellchecker.xml
rename to samples/SpellChecker/SampleSpellCheckerService/res/xml/spellchecker.xml
diff --git a/samples/SampleSpellCheckerService/src/com/example/android/samplespellcheckerservice/SampleSpellCheckerService.java "b/samples/SpellChecker/SampleSpellCheckerService/src/com/example/android/samplespellcheckerservice/\043SampleSpellCheckerService.java\043"
similarity index 100%
copy from samples/SampleSpellCheckerService/src/com/example/android/samplespellcheckerservice/SampleSpellCheckerService.java
copy to "samples/SpellChecker/SampleSpellCheckerService/src/com/example/android/samplespellcheckerservice/\043SampleSpellCheckerService.java\043"
diff --git a/samples/SampleSpellCheckerService/src/com/example/android/samplespellcheckerservice/SampleSpellCheckerService.java b/samples/SpellChecker/SampleSpellCheckerService/src/com/example/android/samplespellcheckerservice/SampleSpellCheckerService.java
similarity index 100%
rename from samples/SampleSpellCheckerService/src/com/example/android/samplespellcheckerservice/SampleSpellCheckerService.java
rename to samples/SpellChecker/SampleSpellCheckerService/src/com/example/android/samplespellcheckerservice/SampleSpellCheckerService.java
diff --git a/samples/SampleSpellCheckerService/src/com/example/android/samplespellcheckerservice/SpellCheckerSettingsActivity.java b/samples/SpellChecker/SampleSpellCheckerService/src/com/example/android/samplespellcheckerservice/SpellCheckerSettingsActivity.java
similarity index 100%
rename from samples/SampleSpellCheckerService/src/com/example/android/samplespellcheckerservice/SpellCheckerSettingsActivity.java
rename to samples/SpellChecker/SampleSpellCheckerService/src/com/example/android/samplespellcheckerservice/SpellCheckerSettingsActivity.java
diff --git a/samples/SampleSpellCheckerService/src/com/example/android/samplespellcheckerservice/SpellCheckerSettingsFragment.java b/samples/SpellChecker/SampleSpellCheckerService/src/com/example/android/samplespellcheckerservice/SpellCheckerSettingsFragment.java
similarity index 100%
rename from samples/SampleSpellCheckerService/src/com/example/android/samplespellcheckerservice/SpellCheckerSettingsFragment.java
rename to samples/SpellChecker/SampleSpellCheckerService/src/com/example/android/samplespellcheckerservice/SpellCheckerSettingsFragment.java
diff --git a/samples/SpellChecker/_index.html b/samples/SpellChecker/_index.html
new file mode 100644
index 0000000..d60c8ca
--- /dev/null
+++ b/samples/SpellChecker/_index.html
@@ -0,0 +1 @@
+<p>A set of samples that demonstrate how to create/use spell checker APIs.</p>
