diff --git a/java/com/android/incallui/speakeasy/Annotations.java b/java/com/android/incallui/speakeasy/Annotations.java
index f369ce4..5d513fc 100644
--- a/java/com/android/incallui/speakeasy/Annotations.java
+++ b/java/com/android/incallui/speakeasy/Annotations.java
@@ -32,4 +32,8 @@
   /** A Speakeasy settings fragment */
   @Qualifier
   public @interface SpeakEasySettingsFragment {}
+
+  /** A Speakeasy settings object */
+  @Qualifier
+  public @interface SpeakEasySettingsObject {}
 }
diff --git a/java/com/android/incallui/speakeasy/SpeakEasyComponent.java b/java/com/android/incallui/speakeasy/SpeakEasyComponent.java
index 6257cc0..ab64380 100644
--- a/java/com/android/incallui/speakeasy/SpeakEasyComponent.java
+++ b/java/com/android/incallui/speakeasy/SpeakEasyComponent.java
@@ -17,10 +17,11 @@
 package com.android.incallui.speakeasy;
 
 import android.content.Context;
-import android.support.v4.app.Fragment;
+import android.preference.PreferenceFragment;
 import com.android.dialer.inject.HasRootComponent;
 import com.android.incallui.speakeasy.Annotations.SpeakEasyIcon;
 import com.android.incallui.speakeasy.Annotations.SpeakEasySettingsFragment;
+import com.android.incallui.speakeasy.Annotations.SpeakEasySettingsObject;
 import com.android.incallui.speakeasy.Annotations.SpeakEasyText;
 import com.google.common.base.Optional;
 import dagger.Subcomponent;
@@ -31,7 +32,10 @@
 
   public abstract SpeakEasyCallManager speakEasyCallManager();
 
-  public abstract @SpeakEasySettingsFragment Optional<Fragment> speakEasySettingsFragment();
+  public abstract @SpeakEasySettingsFragment Optional<PreferenceFragment>
+      speakEasySettingsFragment();
+
+  public abstract @SpeakEasySettingsObject Optional<Object> speakEasySettingsObject();
 
   public abstract @SpeakEasyIcon Optional<Integer> speakEasyIcon();
 
diff --git a/java/com/android/incallui/speakeasy/StubSpeakEasyModule.java b/java/com/android/incallui/speakeasy/StubSpeakEasyModule.java
index 9f23ddd..e844ad3 100644
--- a/java/com/android/incallui/speakeasy/StubSpeakEasyModule.java
+++ b/java/com/android/incallui/speakeasy/StubSpeakEasyModule.java
@@ -16,11 +16,12 @@
 
 package com.android.incallui.speakeasy;
 
-import android.support.v4.app.Fragment;
+import android.preference.PreferenceFragment;
 import com.android.dialer.inject.DialerVariant;
 import com.android.dialer.inject.InstallIn;
 import com.android.incallui.speakeasy.Annotations.SpeakEasyIcon;
 import com.android.incallui.speakeasy.Annotations.SpeakEasySettingsFragment;
+import com.android.incallui.speakeasy.Annotations.SpeakEasySettingsObject;
 import com.android.incallui.speakeasy.Annotations.SpeakEasyText;
 import com.google.common.base.Optional;
 import dagger.Binds;
@@ -36,7 +37,13 @@
   abstract SpeakEasyCallManager bindsSpeakEasy(SpeakEasyCallManagerStub stub);
 
   @Provides
-  static @SpeakEasySettingsFragment Optional<Fragment> provideSpeakEasySettingsFragment() {
+  static @SpeakEasySettingsFragment Optional<PreferenceFragment>
+      provideSpeakEasySettingsFragment() {
+    return Optional.absent();
+  }
+
+  @Provides
+  static @SpeakEasySettingsObject Optional<Object> provideSpeakEasySettingsObject() {
     return Optional.absent();
   }
 
