diff --git a/Android.mk b/Android.mk
index 1145621..b71f702 100644
--- a/Android.mk
+++ b/Android.mk
@@ -39,7 +39,8 @@
 
 # Exclude rootcomponentgenerator
 EXCLUDE_FILES += \
-	$(call all-java-files-under, $(BASE_DIR)/dialer/rootcomponentgenerator/processor)
+	$(call all-java-files-under, $(BASE_DIR)/dialer/rootcomponentgenerator) \
+	$(call all-java-files-under, $(BASE_DIR)/dialer/inject/demo)
 
 # Exclude build variants for now
 EXCLUDE_FILES += \
@@ -149,7 +150,7 @@
 	dialer-rootcomponentprocessor
 
 LOCAL_ANNOTATION_PROCESSOR_CLASSES := \
-  com.google.auto.value.processor.AutoValueProcessor,dagger.internal.codegen.ComponentProcessor,com.bumptech.glide.annotation.compiler.GlideAnnotationProcessor,com.android.dialer.rootcomponentgenerator.processor.RootComponentProcessor
+  com.google.auto.value.processor.AutoValueProcessor,dagger.internal.codegen.ComponentProcessor,com.bumptech.glide.annotation.compiler.GlideAnnotationProcessor,com.android.dialer.rootcomponentgenerator.RootComponentProcessor
 
 # Begin Bug: 37077388
 LOCAL_DX_FLAGS := --multi-dex
@@ -431,9 +432,13 @@
 BASE_DIR := java/com/android
 
 LOCAL_SRC_FILES := \
-	$(call all-java-files-under, $(BASE_DIR)/dialer/rootcomponentgenerator/annotation) \
-	$(call all-java-files-under, $(BASE_DIR)/dialer/rootcomponentgenerator/processor)
-
+	$(call all-java-files-under, $(BASE_DIR)/dialer/rootcomponentgenerator) \
+        $(BASE_DIR)/dialer/inject/DialerRootComponent.java \
+        $(BASE_DIR)/dialer/inject/DialerVariant.java \
+        $(BASE_DIR)/dialer/inject/HasRootComponent.java \
+        $(BASE_DIR)/dialer/inject/IncludeInDialerRoot.java \
+        $(BASE_DIR)/dialer/inject/InstallIn.java \
+        $(BASE_DIR)/dialer/inject/RootComponentGeneratorMetadata.java
 
 LOCAL_STATIC_JAVA_LIBRARIES := \
 	dialer-guava \
diff --git a/java/com/android/dialer/inject/ContextModule.java b/java/com/android/dialer/inject/ContextModule.java
index e3da08e..828f978 100644
--- a/java/com/android/dialer/inject/ContextModule.java
+++ b/java/com/android/dialer/inject/ContextModule.java
@@ -24,6 +24,7 @@
 
 /** Provides the singleton application context object. */
 @Module
+@InstallIn(variants = {DialerVariant.DIALER_DEMO, DialerVariant.DIALER_TEST})
 public final class ContextModule {
 
   @NonNull private final Context context;
diff --git a/java/com/android/dialer/rootcomponentgenerator/annotation/DialerRootComponent.java b/java/com/android/dialer/inject/DialerRootComponent.java
similarity index 95%
rename from java/com/android/dialer/rootcomponentgenerator/annotation/DialerRootComponent.java
rename to java/com/android/dialer/inject/DialerRootComponent.java
index b6bf22e..11dbf96 100644
--- a/java/com/android/dialer/rootcomponentgenerator/annotation/DialerRootComponent.java
+++ b/java/com/android/dialer/inject/DialerRootComponent.java
@@ -14,7 +14,7 @@
  * limitations under the License
  */
 
-package com.android.dialer.rootcomponentgenerator.annotation;
+package com.android.dialer.inject;
 
 import java.lang.annotation.ElementType;
 import java.lang.annotation.Retention;
diff --git a/java/com/android/dialer/rootcomponentgenerator/annotation/DialerVariant.java b/java/com/android/dialer/inject/DialerVariant.java
similarity index 89%
rename from java/com/android/dialer/rootcomponentgenerator/annotation/DialerVariant.java
rename to java/com/android/dialer/inject/DialerVariant.java
index 0bb1852..2e5794f 100644
--- a/java/com/android/dialer/rootcomponentgenerator/annotation/DialerVariant.java
+++ b/java/com/android/dialer/inject/DialerVariant.java
@@ -14,7 +14,7 @@
  * limitations under the License
  */
 
-package com.android.dialer.rootcomponentgenerator.annotation;
+package com.android.dialer.inject;
 
 /** Represents all dialer variants. */
 public enum DialerVariant {
@@ -27,7 +27,9 @@
 
   // TEST variant will be used in situations where we need create in-test application class which
   // doesn't belong to any variants listed above
-  DIALER_TEST("DialerTest");
+  DIALER_TEST("DialerTest"),
+  // Just for sample code in inject/demo.
+  DIALER_DEMO("DialerDemo");
 
   private final String variant;
 
diff --git a/java/com/android/dialer/rootcomponentgenerator/annotation/IncludeInDialerRoot.java b/java/com/android/dialer/inject/IncludeInDialerRoot.java
similarity index 95%
rename from java/com/android/dialer/rootcomponentgenerator/annotation/IncludeInDialerRoot.java
rename to java/com/android/dialer/inject/IncludeInDialerRoot.java
index 4ce9ec3..4e80055 100644
--- a/java/com/android/dialer/rootcomponentgenerator/annotation/IncludeInDialerRoot.java
+++ b/java/com/android/dialer/inject/IncludeInDialerRoot.java
@@ -14,7 +14,7 @@
  * limitations under the License
  */
 
-package com.android.dialer.rootcomponentgenerator.annotation;
+package com.android.dialer.inject;
 
 import java.lang.annotation.ElementType;
 import java.lang.annotation.Target;
diff --git a/java/com/android/dialer/rootcomponentgenerator/annotation/InstallIn.java b/java/com/android/dialer/inject/InstallIn.java
similarity index 94%
rename from java/com/android/dialer/rootcomponentgenerator/annotation/InstallIn.java
rename to java/com/android/dialer/inject/InstallIn.java
index 01a7873..a6f973b 100644
--- a/java/com/android/dialer/rootcomponentgenerator/annotation/InstallIn.java
+++ b/java/com/android/dialer/inject/InstallIn.java
@@ -14,7 +14,7 @@
  * limitations under the License
  */
 
-package com.android.dialer.rootcomponentgenerator.annotation;
+package com.android.dialer.inject;
 
 import java.lang.annotation.ElementType;
 import java.lang.annotation.Target;
diff --git a/java/com/android/dialer/rootcomponentgenerator/annotation/RootComponentGeneratorMetadata.java b/java/com/android/dialer/inject/RootComponentGeneratorMetadata.java
similarity index 93%
rename from java/com/android/dialer/rootcomponentgenerator/annotation/RootComponentGeneratorMetadata.java
rename to java/com/android/dialer/inject/RootComponentGeneratorMetadata.java
index 070cc73..51d134a 100644
--- a/java/com/android/dialer/rootcomponentgenerator/annotation/RootComponentGeneratorMetadata.java
+++ b/java/com/android/dialer/inject/RootComponentGeneratorMetadata.java
@@ -14,7 +14,7 @@
  * limitations under the License
  */
 
-package com.android.dialer.rootcomponentgenerator.annotation;
+package com.android.dialer.inject;
 
 import java.lang.annotation.ElementType;
 import java.lang.annotation.Target;
diff --git a/java/com/android/dialer/inject/demo/DemoDaggerApplication.java b/java/com/android/dialer/inject/demo/DemoDaggerApplication.java
new file mode 100644
index 0000000..0c13dbb
--- /dev/null
+++ b/java/com/android/dialer/inject/demo/DemoDaggerApplication.java
@@ -0,0 +1,55 @@
+/*
+ * Copyright (C) 2018 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.android.dialer.inject.demo;
+
+import android.app.Application;
+import android.support.annotation.NonNull;
+import com.android.dialer.inject.ContextModule;
+import com.android.dialer.inject.DialerRootComponent;
+import com.android.dialer.inject.DialerVariant;
+import com.android.dialer.inject.HasRootComponent;
+
+/** Demo dialer dagger application. */
+@DialerRootComponent(variant = DialerVariant.DIALER_DEMO)
+public final class DemoDaggerApplication extends Application implements HasRootComponent {
+
+  private volatile Object rootComponent;
+
+  /** Returns a cached instance of application's root component. */
+  @Override
+  @NonNull
+  public final Object component() {
+    Object result = rootComponent;
+    if (result == null) {
+      synchronized (this) {
+        result = rootComponent;
+        if (result == null) {
+          rootComponent =
+              result = DaggerDialerDemo.builder().contextModule(new ContextModule(this)).build();
+        }
+      }
+    }
+    return result;
+  }
+
+  @Override
+  public void onCreate() {
+    super.onCreate();
+
+    DemoSubcomponent.get(this).demoObject();
+  }
+}
diff --git a/java/com/android/dialer/inject/demo/DemoModule.java b/java/com/android/dialer/inject/demo/DemoModule.java
new file mode 100644
index 0000000..40cd6fe
--- /dev/null
+++ b/java/com/android/dialer/inject/demo/DemoModule.java
@@ -0,0 +1,35 @@
+/*
+ * Copyright (C) 2018 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.android.dialer.inject.demo;
+
+import com.android.dialer.inject.DialerVariant;
+import com.android.dialer.inject.InstallIn;
+import dagger.Module;
+import dagger.Provides;
+
+/** Module for demo dagger application. */
+@Module
+@InstallIn(variants = DialerVariant.DIALER_DEMO)
+public final class DemoModule {
+
+  private DemoModule() {}
+
+  @Provides
+  static DemoObject provide() {
+    return new DemoObject("prod");
+  }
+}
diff --git a/java/com/android/dialer/rootcomponentgenerator/annotation/RootComponentGeneratorMetadata.java b/java/com/android/dialer/inject/demo/DemoObject.java
similarity index 61%
copy from java/com/android/dialer/rootcomponentgenerator/annotation/RootComponentGeneratorMetadata.java
copy to java/com/android/dialer/inject/demo/DemoObject.java
index 070cc73..c6d48a1 100644
--- a/java/com/android/dialer/rootcomponentgenerator/annotation/RootComponentGeneratorMetadata.java
+++ b/java/com/android/dialer/inject/demo/DemoObject.java
@@ -14,18 +14,19 @@
  * limitations under the License
  */
 
-package com.android.dialer.rootcomponentgenerator.annotation;
+package com.android.dialer.inject.demo;
 
-import java.lang.annotation.ElementType;
-import java.lang.annotation.Target;
+/** Object used to demonstrate dagger bindings. */
+class DemoObject {
 
-/**
- * Only used by rootcomponent generator to store metadata for locating annotated
- * (@DialerComponent, @InstallIn) class.
- */
-@Target(ElementType.TYPE)
-public @interface RootComponentGeneratorMetadata {
-  String tag();
+  private final String value;
 
-  Class<?> annotatedClass();
+  DemoObject(String value) {
+    this.value = value;
+  }
+
+  @Override
+  public String toString() {
+    return value;
+  }
 }
diff --git a/java/com/android/dialer/inject/demo/DemoSubcomponent.java b/java/com/android/dialer/inject/demo/DemoSubcomponent.java
new file mode 100644
index 0000000..ff000aa
--- /dev/null
+++ b/java/com/android/dialer/inject/demo/DemoSubcomponent.java
@@ -0,0 +1,40 @@
+/*
+ * Copyright (C) 2018 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.android.dialer.inject.demo;
+
+import android.content.Context;
+import com.android.dialer.inject.HasRootComponent;
+import com.android.dialer.inject.IncludeInDialerRoot;
+import dagger.Subcomponent;
+
+/** Subcomponent for the demo dagger application. */
+@Subcomponent
+public abstract class DemoSubcomponent {
+
+  abstract DemoObject demoObject();
+
+  public static DemoSubcomponent get(Context context) {
+    return ((HasComponent) ((HasRootComponent) context.getApplicationContext()).component())
+        .demoSubcomponent();
+  }
+
+  /** Used to refer to the root application component. */
+  @IncludeInDialerRoot
+  public interface HasComponent {
+    DemoSubcomponent demoSubcomponent();
+  }
+}
diff --git a/java/com/android/dialer/rootcomponentgenerator/processor/ComponentGeneratingStep.java b/java/com/android/dialer/rootcomponentgenerator/ComponentGeneratingStep.java
similarity index 98%
rename from java/com/android/dialer/rootcomponentgenerator/processor/ComponentGeneratingStep.java
rename to java/com/android/dialer/rootcomponentgenerator/ComponentGeneratingStep.java
index 04d42ac..1a40611 100644
--- a/java/com/android/dialer/rootcomponentgenerator/processor/ComponentGeneratingStep.java
+++ b/java/com/android/dialer/rootcomponentgenerator/ComponentGeneratingStep.java
@@ -14,7 +14,7 @@
  * limitations under the License
  */
 
-package com.android.dialer.rootcomponentgenerator.processor;
+package com.android.dialer.rootcomponentgenerator;
 
 import static com.google.auto.common.AnnotationMirrors.getAnnotationValue;
 import static com.google.auto.common.MoreElements.getAnnotationMirror;
@@ -23,7 +23,7 @@
 import static javax.lang.model.element.Modifier.STATIC;
 import static javax.lang.model.util.ElementFilter.typesIn;
 
-import com.android.dialer.rootcomponentgenerator.annotation.IncludeInDialerRoot;
+import com.android.dialer.inject.IncludeInDialerRoot;
 import com.google.auto.common.BasicAnnotationProcessor.ProcessingStep;
 import com.google.auto.common.MoreElements;
 import com.google.common.base.Optional;
diff --git a/java/com/android/dialer/rootcomponentgenerator/processor/MetadataGeneratingStep.java b/java/com/android/dialer/rootcomponentgenerator/MetadataGeneratingStep.java
similarity index 91%
rename from java/com/android/dialer/rootcomponentgenerator/processor/MetadataGeneratingStep.java
rename to java/com/android/dialer/rootcomponentgenerator/MetadataGeneratingStep.java
index 3b46ed0..266574d 100644
--- a/java/com/android/dialer/rootcomponentgenerator/processor/MetadataGeneratingStep.java
+++ b/java/com/android/dialer/rootcomponentgenerator/MetadataGeneratingStep.java
@@ -14,13 +14,13 @@
  * limitations under the License
  */
 
-package com.android.dialer.rootcomponentgenerator.processor;
+package com.android.dialer.rootcomponentgenerator;
 
 import static javax.tools.Diagnostic.Kind.ERROR;
 
-import com.android.dialer.rootcomponentgenerator.annotation.IncludeInDialerRoot;
-import com.android.dialer.rootcomponentgenerator.annotation.InstallIn;
-import com.android.dialer.rootcomponentgenerator.annotation.RootComponentGeneratorMetadata;
+import com.android.dialer.inject.IncludeInDialerRoot;
+import com.android.dialer.inject.InstallIn;
+import com.android.dialer.inject.RootComponentGeneratorMetadata;
 import com.google.auto.common.BasicAnnotationProcessor.ProcessingStep;
 import com.google.auto.common.MoreElements;
 import com.google.common.collect.ImmutableSet;
diff --git a/java/com/android/dialer/rootcomponentgenerator/processor/RootComponentGeneratingStep.java b/java/com/android/dialer/rootcomponentgenerator/RootComponentGeneratingStep.java
similarity index 92%
rename from java/com/android/dialer/rootcomponentgenerator/processor/RootComponentGeneratingStep.java
rename to java/com/android/dialer/rootcomponentgenerator/RootComponentGeneratingStep.java
index ad91a3c..61c326a 100644
--- a/java/com/android/dialer/rootcomponentgenerator/processor/RootComponentGeneratingStep.java
+++ b/java/com/android/dialer/rootcomponentgenerator/RootComponentGeneratingStep.java
@@ -14,17 +14,17 @@
  * limitations under the License
  */
 
-package com.android.dialer.rootcomponentgenerator.processor;
+package com.android.dialer.rootcomponentgenerator;
 
 import static com.google.auto.common.AnnotationMirrors.getAnnotationValue;
 import static com.google.auto.common.MoreElements.getAnnotationMirror;
 import static com.google.auto.common.MoreElements.isAnnotationPresent;
 
-import com.android.dialer.rootcomponentgenerator.annotation.DialerRootComponent;
-import com.android.dialer.rootcomponentgenerator.annotation.DialerVariant;
-import com.android.dialer.rootcomponentgenerator.annotation.IncludeInDialerRoot;
-import com.android.dialer.rootcomponentgenerator.annotation.InstallIn;
-import com.android.dialer.rootcomponentgenerator.annotation.RootComponentGeneratorMetadata;
+import com.android.dialer.inject.DialerRootComponent;
+import com.android.dialer.inject.DialerVariant;
+import com.android.dialer.inject.IncludeInDialerRoot;
+import com.android.dialer.inject.InstallIn;
+import com.android.dialer.inject.RootComponentGeneratorMetadata;
 import com.google.auto.common.BasicAnnotationProcessor.ProcessingStep;
 import com.google.auto.common.MoreElements;
 import com.google.common.base.Optional;
diff --git a/java/com/android/dialer/rootcomponentgenerator/processor/RootComponentProcessor.java b/java/com/android/dialer/rootcomponentgenerator/RootComponentProcessor.java
similarity index 95%
rename from java/com/android/dialer/rootcomponentgenerator/processor/RootComponentProcessor.java
rename to java/com/android/dialer/rootcomponentgenerator/RootComponentProcessor.java
index 56caa9e..76df5e3 100644
--- a/java/com/android/dialer/rootcomponentgenerator/processor/RootComponentProcessor.java
+++ b/java/com/android/dialer/rootcomponentgenerator/RootComponentProcessor.java
@@ -14,7 +14,7 @@
  * limitations under the License
  */
 
-package com.android.dialer.rootcomponentgenerator.processor;
+package com.android.dialer.rootcomponentgenerator;
 
 import com.google.auto.common.BasicAnnotationProcessor;
 import com.google.auto.service.AutoService;
diff --git a/java/com/android/dialer/rootcomponentgenerator/processor/RootComponentUtils.java b/java/com/android/dialer/rootcomponentgenerator/RootComponentUtils.java
similarity index 96%
rename from java/com/android/dialer/rootcomponentgenerator/processor/RootComponentUtils.java
rename to java/com/android/dialer/rootcomponentgenerator/RootComponentUtils.java
index 8892971..cdcae92 100644
--- a/java/com/android/dialer/rootcomponentgenerator/processor/RootComponentUtils.java
+++ b/java/com/android/dialer/rootcomponentgenerator/RootComponentUtils.java
@@ -14,7 +14,7 @@
  * limitations under the License
  */
 
-package com.android.dialer.rootcomponentgenerator.processor;
+package com.android.dialer.rootcomponentgenerator;
 
 import com.squareup.javapoet.JavaFile;
 import com.squareup.javapoet.TypeSpec;
