diff --git a/pico/src/com/svox/pico/CheckVoiceData.java b/pico/src/com/svox/pico/CheckVoiceData.java
index abd85ab..054fca9 100755
--- a/pico/src/com/svox/pico/CheckVoiceData.java
+++ b/pico/src/com/svox/pico/CheckVoiceData.java
@@ -68,9 +68,8 @@
 
         Bundle bundle = getIntent().getExtras();
         if (bundle != null){
-            // TODO (clchen): Add this intent to TextToSpeech.Engine
             ArrayList<String> langCountryVars = bundle.getStringArrayList(
-                    "TextToSpeech.Engine.EXTRA_CHECK_VOICE_DATA_FOR");
+                    TextToSpeech.Engine.EXTRA_CHECK_VOICE_DATA_FOR);
             if (langCountryVars != null){
                 for (int i = 0; i < langCountryVars.size(); i++){
                     if (langCountryVars.get(i).length() > 0){
@@ -105,9 +104,8 @@
         returnData.putExtra(TextToSpeech.Engine.EXTRA_VOICE_DATA_FILES, dataFiles);
         returnData.putExtra(TextToSpeech.Engine.EXTRA_VOICE_DATA_FILES_INFO, dataFilesInfo);
 
-        // TODO (clchen): Add these intents to TextToSpeech.Engine
-        returnData.putStringArrayListExtra("TextToSpeech.Engine.EXTRA_AVAILABLE_VOICES", available);
-        returnData.putStringArrayListExtra("TextToSpeech.Engine.EXTRA_UNAVAILABLE_VOICES", unavailable);
+        returnData.putStringArrayListExtra(TextToSpeech.Engine.EXTRA_AVAILABLE_VOICES, available);
+        returnData.putStringArrayListExtra(TextToSpeech.Engine.EXTRA_UNAVAILABLE_VOICES, unavailable);
         setResult(result, returnData);
         finish();
     }
diff --git a/pico/src/com/svox/pico/EngineSettings.java b/pico/src/com/svox/pico/EngineSettings.java
index dee798a..d7aa82e 100755
--- a/pico/src/com/svox/pico/EngineSettings.java
+++ b/pico/src/com/svox/pico/EngineSettings.java
@@ -22,6 +22,7 @@
 import android.preference.Preference;
 import android.preference.PreferenceActivity;
 import android.preference.Preference.OnPreferenceClickListener;
+import android.speech.tts.TextToSpeech;
 import android.util.Log;
 
 import java.util.ArrayList;
@@ -47,8 +48,8 @@
     @Override
     public void onActivityResult(int requestCode, int resultCode, Intent data){
         if (requestCode == VOICE_DATA_CHECK_CODE){
-            ArrayList<String> available = data.getStringArrayListExtra("TextToSpeech.Engine.EXTRA_AVAILABLE_VOICES");
-            ArrayList<String> unavailable = data.getStringArrayListExtra("TextToSpeech.Engine.EXTRA_UNAVAILABLE_VOICES");
+            ArrayList<String> available = data.getStringArrayListExtra(TextToSpeech.Engine.EXTRA_AVAILABLE_VOICES);
+            ArrayList<String> unavailable = data.getStringArrayListExtra(TextToSpeech.Engine.EXTRA_UNAVAILABLE_VOICES);
 
             addPreferencesFromResource(R.xml.voices_list);
             
