diff --git a/annotationprocessor/src/main/java/android/databinding/annotationprocessor/AnnotationUtil.java b/annotationprocessor/src/main/java/android/databinding/annotationprocessor/AnnotationUtil.java
new file mode 100644
index 0000000..c82a976
--- /dev/null
+++ b/annotationprocessor/src/main/java/android/databinding/annotationprocessor/AnnotationUtil.java
@@ -0,0 +1,41 @@
+/*
+ * Copyright (C) 2015 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 android.databinding.annotationprocessor;
+
+import java.lang.annotation.Annotation;
+import java.util.ArrayList;
+import java.util.List;
+
+import javax.annotation.processing.RoundEnvironment;
+import javax.lang.model.element.Element;
+
+class AnnotationUtil {
+
+    /**
+     * Returns only the elements that are annotated with the given class. For some reason
+     * RoundEnvironment is returning elements annotated by other annotations.
+     */
+    static List<Element> getElementsAnnotatedWith(RoundEnvironment roundEnv,
+            Class<? extends Annotation> annotationClass) {
+        ArrayList<Element> elements = new ArrayList<>();
+        for (Element element : roundEnv.getElementsAnnotatedWith(annotationClass)) {
+            if (element.getAnnotation(annotationClass) != null) {
+                elements.add(element);
+            }
+        }
+        return elements;
+    }
+}
diff --git a/annotationprocessor/src/main/java/com/android/databinding/annotationprocessor/BuildInfoUtil.java b/annotationprocessor/src/main/java/android/databinding/annotationprocessor/BuildInfoUtil.java
similarity index 92%
rename from annotationprocessor/src/main/java/com/android/databinding/annotationprocessor/BuildInfoUtil.java
rename to annotationprocessor/src/main/java/android/databinding/annotationprocessor/BuildInfoUtil.java
index bd24233..df525c1 100644
--- a/annotationprocessor/src/main/java/com/android/databinding/annotationprocessor/BuildInfoUtil.java
+++ b/annotationprocessor/src/main/java/android/databinding/annotationprocessor/BuildInfoUtil.java
@@ -14,15 +14,13 @@
  * limitations under the License.
  */
 
-package com.android.databinding.annotationprocessor;
+package android.databinding.annotationprocessor;
 
 import com.google.common.base.Preconditions;
 
-import android.binding.BindingBuildInfo;
+import android.databinding.BindingBuildInfo;
 
 import java.lang.annotation.Annotation;
-import java.util.ArrayList;
-import java.util.List;
 
 import javax.annotation.processing.RoundEnvironment;
 import javax.lang.model.element.Element;
@@ -49,6 +47,5 @@
             result = info;
         }
         return result;
-
     }
 }
diff --git a/annotationprocessor/src/main/java/com/android/databinding/annotationprocessor/ProcessBindable.java b/annotationprocessor/src/main/java/android/databinding/annotationprocessor/ProcessBindable.java
similarity index 96%
rename from annotationprocessor/src/main/java/com/android/databinding/annotationprocessor/ProcessBindable.java
rename to annotationprocessor/src/main/java/android/databinding/annotationprocessor/ProcessBindable.java
index 099a0ea..30f9962 100644
--- a/annotationprocessor/src/main/java/com/android/databinding/annotationprocessor/ProcessBindable.java
+++ b/annotationprocessor/src/main/java/android/databinding/annotationprocessor/ProcessBindable.java
@@ -14,15 +14,14 @@
  * limitations under the License.
  */
 
-package com.android.databinding.annotationprocessor;
+package android.databinding.annotationprocessor;
 
 import com.google.common.base.Preconditions;
 
-import com.android.databinding.util.GenerationalClassUtil;
-import com.android.databinding.util.L;
-
-import android.binding.Bindable;
-import android.binding.BindingBuildInfo;
+import android.databinding.Bindable;
+import android.databinding.BindingBuildInfo;
+import android.databinding.tool.util.GenerationalClassUtil;
+import android.databinding.tool.util.L;
 
 import java.io.Serializable;
 import java.util.ArrayList;
@@ -56,7 +55,7 @@
         if (mProperties == null) {
             mProperties = new IntermediateV1(buildInfo.modulePackage());
         }
-        for (Element element : roundEnv.getElementsAnnotatedWith(Bindable.class)) {
+        for (Element element : AnnotationUtil.getElementsAnnotatedWith(roundEnv, Bindable.class)) {
             Element enclosingElement = element.getEnclosingElement();
             ElementKind kind = enclosingElement.getKind();
             if (kind != ElementKind.CLASS && kind != ElementKind.INTERFACE) {
diff --git a/annotationprocessor/src/main/java/com/android/databinding/annotationprocessor/ProcessDataBinding.java b/annotationprocessor/src/main/java/android/databinding/annotationprocessor/ProcessDataBinding.java
similarity index 89%
rename from annotationprocessor/src/main/java/com/android/databinding/annotationprocessor/ProcessDataBinding.java
rename to annotationprocessor/src/main/java/android/databinding/annotationprocessor/ProcessDataBinding.java
index dd64840..2b1321e 100644
--- a/annotationprocessor/src/main/java/com/android/databinding/annotationprocessor/ProcessDataBinding.java
+++ b/annotationprocessor/src/main/java/android/databinding/annotationprocessor/ProcessDataBinding.java
@@ -14,13 +14,12 @@
  * limitations under the License.
  */
 
-package com.android.databinding.annotationprocessor;
+package android.databinding.annotationprocessor;
 
-import com.android.databinding.reflection.ModelAnalyzer;
-import com.android.databinding.writer.AnnotationJavaFileWriter;
-import com.android.databinding.writer.JavaFileWriter;
-
-import android.binding.BindingBuildInfo;
+import android.databinding.BindingBuildInfo;
+import android.databinding.tool.reflection.ModelAnalyzer;
+import android.databinding.tool.writer.AnnotationJavaFileWriter;
+import android.databinding.tool.writer.JavaFileWriter;
 
 import java.util.Arrays;
 import java.util.List;
@@ -35,11 +34,11 @@
 import javax.lang.model.element.TypeElement;
 
 @SupportedAnnotationTypes({
-        "android.binding.BindingAdapter",
-        "android.binding.Untaggable",
-        "android.binding.BindingMethods",
-        "android.binding.BindingConversion",
-        "android.binding.BindingBuildInfo"}
+        "android.databinding.BindingAdapter",
+        "android.databinding.Untaggable",
+        "android.databinding.BindingMethods",
+        "android.databinding.BindingConversion",
+        "android.databinding.BindingBuildInfo"}
 )
 @SupportedSourceVersion(SourceVersion.RELEASE_7)
 /**
diff --git a/annotationprocessor/src/main/java/com/android/databinding/annotationprocessor/ProcessExpressions.java b/annotationprocessor/src/main/java/android/databinding/annotationprocessor/ProcessExpressions.java
similarity index 95%
rename from annotationprocessor/src/main/java/com/android/databinding/annotationprocessor/ProcessExpressions.java
rename to annotationprocessor/src/main/java/android/databinding/annotationprocessor/ProcessExpressions.java
index 7f5ab94..31a04ec 100644
--- a/annotationprocessor/src/main/java/com/android/databinding/annotationprocessor/ProcessExpressions.java
+++ b/annotationprocessor/src/main/java/android/databinding/annotationprocessor/ProcessExpressions.java
@@ -14,18 +14,17 @@
  * limitations under the License.
  */
 
-package com.android.databinding.annotationprocessor;
-
-import com.android.databinding.CompilerChef;
-import com.android.databinding.reflection.SdkUtil;
-import com.android.databinding.store.ResourceBundle;
-import com.android.databinding.util.GenerationalClassUtil;
-import com.android.databinding.util.L;
+package android.databinding.annotationprocessor;
 
 import org.apache.commons.io.FileUtils;
 import org.apache.commons.io.IOUtils;
 
-import android.binding.BindingBuildInfo;
+import android.databinding.BindingBuildInfo;
+import android.databinding.tool.CompilerChef;
+import android.databinding.tool.reflection.SdkUtil;
+import android.databinding.tool.store.ResourceBundle;
+import android.databinding.tool.util.GenerationalClassUtil;
+import android.databinding.tool.util.L;
 
 import java.io.File;
 import java.io.FilenameFilter;
diff --git a/annotationprocessor/src/main/java/com/android/databinding/annotationprocessor/ProcessMethodAdapters.java b/annotationprocessor/src/main/java/android/databinding/annotationprocessor/ProcessMethodAdapters.java
similarity index 81%
rename from annotationprocessor/src/main/java/com/android/databinding/annotationprocessor/ProcessMethodAdapters.java
rename to annotationprocessor/src/main/java/android/databinding/annotationprocessor/ProcessMethodAdapters.java
index a13e3a2..98da839 100644
--- a/annotationprocessor/src/main/java/com/android/databinding/annotationprocessor/ProcessMethodAdapters.java
+++ b/annotationprocessor/src/main/java/android/databinding/annotationprocessor/ProcessMethodAdapters.java
@@ -13,20 +13,19 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package com.android.databinding.annotationprocessor;
+package android.databinding.annotationprocessor;
 
 import com.google.common.base.Preconditions;
 
-import android.binding.BindingAdapter;
-import android.binding.BindingBuildInfo;
-import android.binding.BindingConversion;
-import android.binding.BindingMethod;
-import android.binding.BindingMethods;
-import android.binding.Untaggable;
-
-import com.android.databinding.reflection.ModelAnalyzer;
-import com.android.databinding.store.SetterStore;
-import com.android.databinding.util.L;
+import android.databinding.BindingAdapter;
+import android.databinding.BindingBuildInfo;
+import android.databinding.BindingConversion;
+import android.databinding.BindingMethod;
+import android.databinding.BindingMethods;
+import android.databinding.Untaggable;
+import android.databinding.tool.reflection.ModelAnalyzer;
+import android.databinding.tool.store.SetterStore;
+import android.databinding.tool.util.L;
 
 import java.io.IOException;
 import java.util.HashSet;
@@ -78,7 +77,8 @@
 
     private void addBindingAdapters(RoundEnvironment roundEnv, ProcessingEnvironment
             processingEnv, SetterStore store) {
-        for (Element element : roundEnv.getElementsAnnotatedWith(BindingAdapter.class)) {
+        for (Element element : AnnotationUtil
+                .getElementsAnnotatedWith(roundEnv, BindingAdapter.class)) {
             if (element.getKind() != ElementKind.METHOD ||
                     !element.getModifiers().contains(Modifier.STATIC) ||
                     !element.getModifiers().contains(Modifier.PUBLIC)) {
@@ -104,7 +104,8 @@
 
     private void addRenamed(RoundEnvironment roundEnv, ProcessingEnvironment processingEnv,
             SetterStore store) {
-        for (Element element : roundEnv.getElementsAnnotatedWith(BindingMethods.class)) {
+        for (Element element : AnnotationUtil
+                .getElementsAnnotatedWith(roundEnv, BindingMethods.class)) {
             BindingMethods bindingMethods = element.getAnnotation(BindingMethods.class);
             for (BindingMethod bindingMethod : bindingMethods.value()) {
                 store.addRenamedMethod(bindingMethod.attribute(),
@@ -115,7 +116,8 @@
 
     private void addConversions(RoundEnvironment roundEnv,
             ProcessingEnvironment processingEnv, SetterStore store) {
-        for (Element element : roundEnv.getElementsAnnotatedWith(BindingConversion.class)) {
+        for (Element element : AnnotationUtil
+                .getElementsAnnotatedWith(roundEnv, BindingConversion.class)) {
             if (element.getKind() != ElementKind.METHOD ||
                     !element.getModifiers().contains(Modifier.STATIC) ||
                     !element.getModifiers().contains(Modifier.PUBLIC)) {
@@ -143,7 +145,7 @@
 
     private void addUntaggable(RoundEnvironment roundEnv,
             ProcessingEnvironment processingEnv, SetterStore store) {
-        for (Element element : roundEnv.getElementsAnnotatedWith(Untaggable.class)) {
+        for (Element element : AnnotationUtil.getElementsAnnotatedWith(roundEnv, Untaggable.class)) {
             Untaggable untaggable = element.getAnnotation(Untaggable.class);
             store.addUntaggableTypes(untaggable.value(), (TypeElement) element);
         }
@@ -152,19 +154,24 @@
     private void clearIncrementalClasses(RoundEnvironment roundEnv, SetterStore store) {
         HashSet<String> classes = new HashSet<>();
 
-        for (Element element : roundEnv.getElementsAnnotatedWith(BindingAdapter.class)) {
+        for (Element element : AnnotationUtil
+                .getElementsAnnotatedWith(roundEnv, BindingAdapter.class)) {
             TypeElement containingClass = (TypeElement) element.getEnclosingElement();
             classes.add(containingClass.getQualifiedName().toString());
         }
-        for (Element element : roundEnv.getElementsAnnotatedWith(BindingMethods.class)) {
+        for (Element element : AnnotationUtil
+                .getElementsAnnotatedWith(roundEnv, BindingMethods.class)) {
             classes.add(((TypeElement) element).getQualifiedName().toString());
         }
-        for (Element element : roundEnv.getElementsAnnotatedWith(BindingConversion.class)) {
-            classes.add(((TypeElement) element.getEnclosingElement()).getQualifiedName().toString());
+        for (Element element : AnnotationUtil
+                .getElementsAnnotatedWith(roundEnv, BindingConversion.class)) {
+            classes.add(((TypeElement) element.getEnclosingElement()).getQualifiedName().
+                    toString());
         }
-        for (Element element : roundEnv.getElementsAnnotatedWith(Untaggable.class)) {
+        for (Element element : AnnotationUtil.getElementsAnnotatedWith(roundEnv, Untaggable.class)) {
             classes.add(((TypeElement) element).getQualifiedName().toString());
         }
         store.clear(classes);
     }
+
 }
diff --git a/annotationprocessor/src/main/resources/META-INF/services/javax.annotation.processing.Processor b/annotationprocessor/src/main/resources/META-INF/services/javax.annotation.processing.Processor
index 27f59e0..482452e 100644
--- a/annotationprocessor/src/main/resources/META-INF/services/javax.annotation.processing.Processor
+++ b/annotationprocessor/src/main/resources/META-INF/services/javax.annotation.processing.Processor
@@ -1 +1 @@
-com.android.databinding.annotationprocessor.ProcessDataBinding
\ No newline at end of file
+android.databinding.annotationprocessor.ProcessDataBinding
\ No newline at end of file
diff --git a/baseLibrary/src/main/java/android/binding/Bindable.java b/baseLibrary/src/main/java/android/databinding/Bindable.java
similarity index 96%
rename from baseLibrary/src/main/java/android/binding/Bindable.java
rename to baseLibrary/src/main/java/android/databinding/Bindable.java
index 09bcde9..3dcebdd 100644
--- a/baseLibrary/src/main/java/android/binding/Bindable.java
+++ b/baseLibrary/src/main/java/android/databinding/Bindable.java
@@ -13,7 +13,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package android.binding;
+package android.databinding;
 
 import java.lang.annotation.ElementType;
 import java.lang.annotation.Retention;
diff --git a/baseLibrary/src/main/java/android/binding/BindingAdapter.java b/baseLibrary/src/main/java/android/databinding/BindingAdapter.java
similarity index 96%
rename from baseLibrary/src/main/java/android/binding/BindingAdapter.java
rename to baseLibrary/src/main/java/android/databinding/BindingAdapter.java
index 8d06773..3d50ed3 100644
--- a/baseLibrary/src/main/java/android/binding/BindingAdapter.java
+++ b/baseLibrary/src/main/java/android/databinding/BindingAdapter.java
@@ -13,7 +13,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package android.binding;
+package android.databinding;
 
 import java.lang.annotation.ElementType;
 import java.lang.annotation.Target;
diff --git a/baseLibrary/src/main/java/android/binding/BindingBuildInfo.java b/baseLibrary/src/main/java/android/databinding/BindingBuildInfo.java
similarity index 97%
rename from baseLibrary/src/main/java/android/binding/BindingBuildInfo.java
rename to baseLibrary/src/main/java/android/databinding/BindingBuildInfo.java
index 62b6043..cbe1e99 100644
--- a/baseLibrary/src/main/java/android/binding/BindingBuildInfo.java
+++ b/baseLibrary/src/main/java/android/databinding/BindingBuildInfo.java
@@ -13,7 +13,7 @@
  * limitations under the License.
  */
 
-package android.binding;
+package android.databinding;
 
 import java.lang.annotation.ElementType;
 import java.lang.annotation.Retention;
diff --git a/baseLibrary/src/main/java/android/binding/BindingConversion.java b/baseLibrary/src/main/java/android/databinding/BindingConversion.java
similarity index 96%
rename from baseLibrary/src/main/java/android/binding/BindingConversion.java
rename to baseLibrary/src/main/java/android/databinding/BindingConversion.java
index 3fb70ca..9942f5c 100644
--- a/baseLibrary/src/main/java/android/binding/BindingConversion.java
+++ b/baseLibrary/src/main/java/android/databinding/BindingConversion.java
@@ -13,7 +13,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package android.binding;
+package android.databinding;
 
 
 import java.lang.annotation.ElementType;
diff --git a/baseLibrary/src/main/java/android/binding/BindingMethod.java b/baseLibrary/src/main/java/android/databinding/BindingMethod.java
similarity index 91%
rename from baseLibrary/src/main/java/android/binding/BindingMethod.java
rename to baseLibrary/src/main/java/android/databinding/BindingMethod.java
index 0eb0b73..6384409 100644
--- a/baseLibrary/src/main/java/android/binding/BindingMethod.java
+++ b/baseLibrary/src/main/java/android/databinding/BindingMethod.java
@@ -13,11 +13,8 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package android.binding;
+package android.databinding;
 
-/**
- * Created by mount on 1/12/15.
- */
 public @interface BindingMethod {
     String type();
     String attribute();
diff --git a/baseLibrary/src/main/java/android/binding/BindingMethods.java b/baseLibrary/src/main/java/android/databinding/BindingMethods.java
similarity index 96%
rename from baseLibrary/src/main/java/android/binding/BindingMethods.java
rename to baseLibrary/src/main/java/android/databinding/BindingMethods.java
index 599001d..a3d39f8 100644
--- a/baseLibrary/src/main/java/android/binding/BindingMethods.java
+++ b/baseLibrary/src/main/java/android/databinding/BindingMethods.java
@@ -13,7 +13,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package android.binding;
+package android.databinding;
 
 import java.lang.annotation.ElementType;
 import java.lang.annotation.Target;
diff --git a/baseLibrary/src/main/java/android/binding/CallbackRegistry.java b/baseLibrary/src/main/java/android/databinding/CallbackRegistry.java
similarity index 99%
rename from baseLibrary/src/main/java/android/binding/CallbackRegistry.java
rename to baseLibrary/src/main/java/android/databinding/CallbackRegistry.java
index 90c9c17..002692f 100644
--- a/baseLibrary/src/main/java/android/binding/CallbackRegistry.java
+++ b/baseLibrary/src/main/java/android/databinding/CallbackRegistry.java
@@ -13,7 +13,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package android.binding;
+package android.databinding;
 
 import java.util.ArrayList;
 import java.util.List;
diff --git a/baseLibrary/src/main/java/android/binding/Observable.java b/baseLibrary/src/main/java/android/databinding/Observable.java
similarity index 96%
rename from baseLibrary/src/main/java/android/binding/Observable.java
rename to baseLibrary/src/main/java/android/databinding/Observable.java
index 5bac9b1..caca167 100644
--- a/baseLibrary/src/main/java/android/binding/Observable.java
+++ b/baseLibrary/src/main/java/android/databinding/Observable.java
@@ -14,7 +14,7 @@
  * limitations under the License.
  */
 
-package android.binding;
+package android.databinding;
 
 public interface Observable {
 
diff --git a/baseLibrary/src/main/java/android/binding/ObservableList.java b/baseLibrary/src/main/java/android/databinding/ObservableList.java
similarity index 96%
rename from baseLibrary/src/main/java/android/binding/ObservableList.java
rename to baseLibrary/src/main/java/android/databinding/ObservableList.java
index 61e6663..3b82cf1 100644
--- a/baseLibrary/src/main/java/android/binding/ObservableList.java
+++ b/baseLibrary/src/main/java/android/databinding/ObservableList.java
@@ -13,7 +13,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package android.binding;
+package android.databinding;
 
 import java.util.List;
 
diff --git a/baseLibrary/src/main/java/android/binding/ObservableMap.java b/baseLibrary/src/main/java/android/databinding/ObservableMap.java
similarity index 96%
rename from baseLibrary/src/main/java/android/binding/ObservableMap.java
rename to baseLibrary/src/main/java/android/databinding/ObservableMap.java
index f0237aa..9240c48 100644
--- a/baseLibrary/src/main/java/android/binding/ObservableMap.java
+++ b/baseLibrary/src/main/java/android/databinding/ObservableMap.java
@@ -13,7 +13,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package android.binding;
+package android.databinding;
 
 import java.util.Map;
 
diff --git a/baseLibrary/src/main/java/android/binding/OnListChangedListener.java b/baseLibrary/src/main/java/android/databinding/OnListChangedListener.java
similarity index 96%
rename from baseLibrary/src/main/java/android/binding/OnListChangedListener.java
rename to baseLibrary/src/main/java/android/databinding/OnListChangedListener.java
index 99a05fe..a76269e 100644
--- a/baseLibrary/src/main/java/android/binding/OnListChangedListener.java
+++ b/baseLibrary/src/main/java/android/databinding/OnListChangedListener.java
@@ -13,7 +13,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package android.binding;
+package android.databinding;
 
 public interface OnListChangedListener {
     void onChanged();
diff --git a/baseLibrary/src/main/java/android/binding/OnMapChangedListener.java b/baseLibrary/src/main/java/android/databinding/OnMapChangedListener.java
similarity index 95%
rename from baseLibrary/src/main/java/android/binding/OnMapChangedListener.java
rename to baseLibrary/src/main/java/android/databinding/OnMapChangedListener.java
index edde01b..647b1f7 100644
--- a/baseLibrary/src/main/java/android/binding/OnMapChangedListener.java
+++ b/baseLibrary/src/main/java/android/databinding/OnMapChangedListener.java
@@ -13,7 +13,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package android.binding;
+package android.databinding;
 
 public interface OnMapChangedListener<T extends ObservableMap<K, ?>, K> {
     void onMapChanged(T sender, K key);
diff --git a/baseLibrary/src/main/java/android/binding/OnPropertyChangedListener.java b/baseLibrary/src/main/java/android/databinding/OnPropertyChangedListener.java
similarity index 95%
rename from baseLibrary/src/main/java/android/binding/OnPropertyChangedListener.java
rename to baseLibrary/src/main/java/android/databinding/OnPropertyChangedListener.java
index b328f9d..4103f07 100644
--- a/baseLibrary/src/main/java/android/binding/OnPropertyChangedListener.java
+++ b/baseLibrary/src/main/java/android/databinding/OnPropertyChangedListener.java
@@ -14,7 +14,7 @@
  * limitations under the License.
  */
 
-package android.binding;
+package android.databinding;
 
 public interface OnPropertyChangedListener {
     public void onPropertyChanged(Observable sender, int fieldId);
diff --git a/baseLibrary/src/main/java/android/binding/Untaggable.java b/baseLibrary/src/main/java/android/databinding/Untaggable.java
similarity index 96%
rename from baseLibrary/src/main/java/android/binding/Untaggable.java
rename to baseLibrary/src/main/java/android/databinding/Untaggable.java
index 0974e5b..a1ce3ac 100644
--- a/baseLibrary/src/main/java/android/binding/Untaggable.java
+++ b/baseLibrary/src/main/java/android/databinding/Untaggable.java
@@ -13,7 +13,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package android.binding;
+package android.databinding;
 
 import java.lang.annotation.ElementType;
 import java.lang.annotation.Target;
diff --git a/compiler/src/main/java/com/android/databinding/Binding.java b/compiler/src/main/java/android/databinding/tool/Binding.java
similarity index 88%
rename from compiler/src/main/java/com/android/databinding/Binding.java
rename to compiler/src/main/java/android/databinding/tool/Binding.java
index 4425e0f..247735d 100644
--- a/compiler/src/main/java/com/android/databinding/Binding.java
+++ b/compiler/src/main/java/android/databinding/tool/Binding.java
@@ -14,13 +14,12 @@
  * limitations under the License.
  */
 
-package com.android.databinding;
+package android.databinding.tool;
 
-import com.android.databinding.reflection.ModelAnalyzer;
-import com.android.databinding.reflection.ModelClass;
-import com.android.databinding.reflection.SdkUtil;
-import com.android.databinding.store.SetterStore;
-import com.android.databinding.expr.Expr;
+import android.databinding.tool.expr.Expr;
+import android.databinding.tool.reflection.ModelAnalyzer;
+import android.databinding.tool.reflection.ModelClass;
+import android.databinding.tool.store.SetterStore;
 
 public class Binding {
 
diff --git a/compiler/src/main/java/com/android/databinding/BindingTarget.java b/compiler/src/main/java/android/databinding/tool/BindingTarget.java
similarity index 87%
rename from compiler/src/main/java/com/android/databinding/BindingTarget.java
rename to compiler/src/main/java/android/databinding/tool/BindingTarget.java
index b0f1ff3..ab88cf8 100644
--- a/compiler/src/main/java/com/android/databinding/BindingTarget.java
+++ b/compiler/src/main/java/android/databinding/tool/BindingTarget.java
@@ -14,18 +14,17 @@
  * limitations under the License.
  */
 
-package com.android.databinding;
+package android.databinding.tool;
 
-import com.android.databinding.expr.Expr;
-import com.android.databinding.expr.ExprModel;
-import com.android.databinding.reflection.ModelAnalyzer;
-import com.android.databinding.reflection.ModelClass;
-import com.android.databinding.store.ResourceBundle;
-import com.android.databinding.store.SetterStore;
+import android.databinding.tool.expr.Expr;
+import android.databinding.tool.expr.ExprModel;
+import android.databinding.tool.reflection.ModelAnalyzer;
+import android.databinding.tool.reflection.ModelClass;
+import android.databinding.tool.store.ResourceBundle;
+import android.databinding.tool.store.SetterStore;
 
 import java.util.ArrayList;
 import java.util.List;
-import java.util.Map;
 
 public class BindingTarget {
     List<Binding> mBindings = new ArrayList<Binding>();
diff --git a/compiler/src/main/java/com/android/databinding/CompilerChef.java b/compiler/src/main/java/android/databinding/tool/CompilerChef.java
similarity index 85%
rename from compiler/src/main/java/com/android/databinding/CompilerChef.java
rename to compiler/src/main/java/android/databinding/tool/CompilerChef.java
index 015c7e0..527cf8d 100644
--- a/compiler/src/main/java/com/android/databinding/CompilerChef.java
+++ b/compiler/src/main/java/android/databinding/tool/CompilerChef.java
@@ -11,12 +11,12 @@
  * limitations under the License.
  */
 
-package com.android.databinding;
+package android.databinding.tool;
 
-import com.android.databinding.store.ResourceBundle;
-import com.android.databinding.util.L;
-import com.android.databinding.writer.DataBinderWriter;
-import com.android.databinding.writer.JavaFileWriter;
+import android.databinding.tool.store.ResourceBundle;
+import android.databinding.tool.util.L;
+import android.databinding.tool.writer.DataBinderWriter;
+import android.databinding.tool.writer.JavaFileWriter;
 
 /**
  * Chef class for compiler.
@@ -59,11 +59,11 @@
 
     public void writeDbrFile() {
         ensureDataBinder();
-        final String pkg = "com.android.databinding.library";
+        final String pkg = "android.databinding";
         DataBinderWriter dbr = new DataBinderWriter(pkg, mResourceBundle.getAppPackage(),
                 "GeneratedDataBinderRenderer", mDataBinder.getLayoutBinders());
         if (dbr.getLayoutBinders().size() > 0) {
-            mFileWriter.writeToFile(dbr.getPkg() + "." + dbr.getClassName(), dbr.write());
+            mFileWriter.writeToFile(pkg + "." + dbr.getClassName(), dbr.write());
         }
     }
     
diff --git a/compiler/src/main/java/com/android/databinding/DataBinder.java b/compiler/src/main/java/android/databinding/tool/DataBinder.java
similarity index 92%
rename from compiler/src/main/java/com/android/databinding/DataBinder.java
rename to compiler/src/main/java/android/databinding/tool/DataBinder.java
index 0db8aae..1fc9f63 100644
--- a/compiler/src/main/java/com/android/databinding/DataBinder.java
+++ b/compiler/src/main/java/android/databinding/tool/DataBinder.java
@@ -14,10 +14,11 @@
  * limitations under the License.
  */
 
-package com.android.databinding;
-import com.android.databinding.store.ResourceBundle;
-import com.android.databinding.util.L;
-import com.android.databinding.writer.JavaFileWriter;
+package android.databinding.tool;
+
+import android.databinding.tool.store.ResourceBundle;
+import android.databinding.tool.util.L;
+import android.databinding.tool.writer.JavaFileWriter;
 
 import java.util.ArrayList;
 import java.util.HashSet;
@@ -25,7 +26,6 @@
 import java.util.Map;
 import java.util.Set;
 
-
 /**
  * The main class that handles parsing files and generating classes.
  */
diff --git a/compiler/src/main/java/com/android/databinding/ExpressionParser.java b/compiler/src/main/java/android/databinding/tool/ExpressionParser.java
similarity index 84%
rename from compiler/src/main/java/com/android/databinding/ExpressionParser.java
rename to compiler/src/main/java/android/databinding/tool/ExpressionParser.java
index a6a40a0..03687ff 100644
--- a/compiler/src/main/java/com/android/databinding/ExpressionParser.java
+++ b/compiler/src/main/java/android/databinding/tool/ExpressionParser.java
@@ -14,15 +14,17 @@
  * limitations under the License.
  */
 
-package com.android.databinding;
-
-import com.android.databinding.expr.Expr;
-import com.android.databinding.expr.ExprModel;
-import com.android.databinding.util.L;
+package android.databinding.tool;
 
 import org.antlr.v4.runtime.ANTLRInputStream;
 import org.antlr.v4.runtime.CommonTokenStream;
 
+import android.databinding.parser.BindingExpressionLexer;
+import android.databinding.parser.BindingExpressionParser;
+import android.databinding.tool.expr.Expr;
+import android.databinding.tool.expr.ExprModel;
+import android.databinding.tool.util.L;
+
 public class ExpressionParser {
     final ExprModel mModel;
     final ExpressionVisitor visitor;
diff --git a/compiler/src/main/java/com/android/databinding/ExpressionVisitor.java b/compiler/src/main/java/android/databinding/tool/ExpressionVisitor.java
similarity index 96%
rename from compiler/src/main/java/com/android/databinding/ExpressionVisitor.java
rename to compiler/src/main/java/android/databinding/tool/ExpressionVisitor.java
index 7b3f2f5..879c439 100644
--- a/compiler/src/main/java/com/android/databinding/ExpressionVisitor.java
+++ b/compiler/src/main/java/android/databinding/tool/ExpressionVisitor.java
@@ -14,27 +14,25 @@
  * limitations under the License.
  */
 
-package com.android.databinding;
+package android.databinding.tool;
 
 import com.google.common.base.Preconditions;
 
-import com.android.databinding.expr.Expr;
-import com.android.databinding.expr.ExprModel;
-import com.android.databinding.expr.StaticIdentifierExpr;
-import com.android.databinding.reflection.ModelAnalyzer;
-import com.android.databinding.reflection.ModelClass;
-import com.android.databinding.util.L;
-
 import org.antlr.v4.runtime.misc.NotNull;
 import org.antlr.v4.runtime.tree.ParseTree;
 import org.antlr.v4.runtime.tree.TerminalNode;
 import org.apache.commons.lang3.ObjectUtils;
-import org.apache.commons.lang3.StringUtils;
+
+import android.databinding.parser.BindingExpressionBaseVisitor;
+import android.databinding.parser.BindingExpressionParser;
+import android.databinding.tool.expr.Expr;
+import android.databinding.tool.expr.ExprModel;
+import android.databinding.tool.expr.StaticIdentifierExpr;
+import android.databinding.tool.reflection.ModelAnalyzer;
+import android.databinding.tool.reflection.ModelClass;
 
 import java.util.ArrayList;
-import java.util.HashMap;
 import java.util.List;
-import java.util.Map;
 
 public class ExpressionVisitor extends BindingExpressionBaseVisitor<Expr> {
     private final ExprModel mModel;
diff --git a/compiler/src/main/java/com/android/databinding/LayoutBinder.java b/compiler/src/main/java/android/databinding/tool/LayoutBinder.java
similarity index 93%
rename from compiler/src/main/java/com/android/databinding/LayoutBinder.java
rename to compiler/src/main/java/android/databinding/tool/LayoutBinder.java
index a2aa248..304fd31 100644
--- a/compiler/src/main/java/com/android/databinding/LayoutBinder.java
+++ b/compiler/src/main/java/android/databinding/tool/LayoutBinder.java
@@ -14,17 +14,17 @@
  * limitations under the License.
  */
 
-package com.android.databinding;
+package android.databinding.tool;
 
 import com.google.common.base.Preconditions;
 
-import com.android.databinding.expr.Dependency;
-import com.android.databinding.expr.Expr;
-import com.android.databinding.expr.ExprModel;
-import com.android.databinding.expr.IdentifierExpr;
-import com.android.databinding.store.ResourceBundle;
-import com.android.databinding.util.ParserHelper;
-import com.android.databinding.writer.LayoutBinderWriter;
+import android.databinding.tool.expr.Dependency;
+import android.databinding.tool.expr.Expr;
+import android.databinding.tool.expr.ExprModel;
+import android.databinding.tool.expr.IdentifierExpr;
+import android.databinding.tool.store.ResourceBundle;
+import android.databinding.tool.util.ParserHelper;
+import android.databinding.tool.writer.LayoutBinderWriter;
 
 import java.util.ArrayList;
 import java.util.HashMap;
diff --git a/compiler/src/main/java/com/android/databinding/LayoutXmlProcessor.java b/compiler/src/main/java/android/databinding/tool/LayoutXmlProcessor.java
similarity index 92%
rename from compiler/src/main/java/com/android/databinding/LayoutXmlProcessor.java
rename to compiler/src/main/java/android/databinding/tool/LayoutXmlProcessor.java
index d0ce506..90619c7 100644
--- a/compiler/src/main/java/com/android/databinding/LayoutXmlProcessor.java
+++ b/compiler/src/main/java/android/databinding/tool/LayoutXmlProcessor.java
@@ -11,19 +11,18 @@
  * limitations under the License.
  */
 
-package com.android.databinding;
+package android.databinding.tool;
 
 import com.google.common.base.Predicate;
 import com.google.common.collect.Iterables;
 
-import com.android.databinding.store.LayoutFileParser;
-import com.android.databinding.store.ResourceBundle;
-import com.android.databinding.writer.JavaFileWriter;
-
 import org.apache.commons.lang3.StringEscapeUtils;
 import org.xml.sax.SAXException;
 
-import android.binding.BindingBuildInfo;
+import android.databinding.BindingBuildInfo;
+import android.databinding.tool.store.LayoutFileParser;
+import android.databinding.tool.store.ResourceBundle;
+import android.databinding.tool.writer.JavaFileWriter;
 
 import java.io.File;
 import java.io.FilenameFilter;
@@ -46,7 +45,7 @@
  */
 public class LayoutXmlProcessor {
     // hardcoded in baseAdapters
-    public static final String RESOURCE_BUNDLE_PACKAGE = "com.android.databinding.layouts";
+    public static final String RESOURCE_BUNDLE_PACKAGE = "android.databinding.layouts";
     public static final String CLASS_NAME = "DataBindingInfo";
     private final JavaFileWriter mFileWriter;
     private final ResourceBundle mResourceBundle;
@@ -118,7 +117,7 @@
         }
         JAXBContext context = JAXBContext.newInstance(ResourceBundle.LayoutFileBundle.class);
         Marshaller marshaller = context.createMarshaller();
-        writeInfoClass(marshaller, sdkDir, xmlOutDir);
+        writeInfoClass(sdkDir, xmlOutDir);
         for (List<ResourceBundle.LayoutFileBundle> layouts : mResourceBundle.getLayoutBundles()
                 .values()) {
             for (ResourceBundle.LayoutFileBundle layout : layouts) {
@@ -164,7 +163,7 @@
         return name.toString();
     }
 
-    private void writeInfoClass(Marshaller marshaller, File sdkDir, File xmlOutDir) {
+    private void writeInfoClass(File sdkDir, File xmlOutDir) {
         final String sdkPath = StringEscapeUtils.escapeJava(sdkDir.getAbsolutePath());
         final Class annotation = BindingBuildInfo.class;
         final String layoutInfoPath = StringEscapeUtils.escapeJava(xmlOutDir.getAbsolutePath());
@@ -177,7 +176,7 @@
                 "isLibrary=" + mIsLibrary + "," +
                 "minSdk=" + mMinSdk + ")\n" +
                 "public class " + CLASS_NAME + " {}\n";
-        mFileWriter.writeToFile(mResourceBundle.getAppPackage() + "." + CLASS_NAME, classString);
+        mFileWriter.writeToFile(RESOURCE_BUNDLE_PACKAGE + "." + CLASS_NAME, classString);
     }
 
     private static final Predicate<File> fileExists = new Predicate<File>() {
diff --git a/compiler/src/main/java/com/android/databinding/MakeCopy.java b/compiler/src/main/java/android/databinding/tool/MakeCopy.java
similarity index 96%
rename from compiler/src/main/java/com/android/databinding/MakeCopy.java
rename to compiler/src/main/java/android/databinding/tool/MakeCopy.java
index 141018e..ac585d1 100644
--- a/compiler/src/main/java/com/android/databinding/MakeCopy.java
+++ b/compiler/src/main/java/android/databinding/tool/MakeCopy.java
@@ -13,28 +13,24 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package com.android.databinding;
-
-import com.android.databinding.writer.JavaFileWriter;
+package android.databinding.tool;
 
 import org.apache.commons.io.FileUtils;
 import org.apache.commons.io.IOUtils;
 import org.w3c.dom.Document;
-import org.xml.sax.SAXException;
+
+import android.databinding.tool.writer.JavaFileWriter;
 
 import java.io.File;
 import java.io.FileWriter;
 import java.io.FilenameFilter;
 import java.io.IOException;
 import java.util.ArrayList;
-import java.util.UUID;
 
 import javax.xml.parsers.DocumentBuilder;
 import javax.xml.parsers.DocumentBuilderFactory;
-import javax.xml.parsers.ParserConfigurationException;
 import javax.xml.xpath.XPath;
 import javax.xml.xpath.XPathConstants;
-import javax.xml.xpath.XPathExpression;
 import javax.xml.xpath.XPathExpressionException;
 import javax.xml.xpath.XPathFactory;
 
@@ -50,7 +46,7 @@
     private static final int RES_OUT_INDEX = 4;
     private static final int RES_IN_INDEX = 5;
 
-    private static final String APP_SUBPATH = "com.android.databinding.layouts"
+    private static final String APP_SUBPATH = LayoutXmlProcessor.RESOURCE_BUNDLE_PACKAGE
             .replace('.', File.separatorChar);
     private static final FilenameFilter LAYOUT_DIR_FILTER = new FilenameFilter() {
         @Override
diff --git a/compiler/src/main/java/com/android/databinding/expr/BracketExpr.java b/compiler/src/main/java/android/databinding/tool/expr/BracketExpr.java
similarity index 93%
rename from compiler/src/main/java/com/android/databinding/expr/BracketExpr.java
rename to compiler/src/main/java/android/databinding/tool/expr/BracketExpr.java
index a46e4d4..b5cce7d 100644
--- a/compiler/src/main/java/com/android/databinding/expr/BracketExpr.java
+++ b/compiler/src/main/java/android/databinding/tool/expr/BracketExpr.java
@@ -14,10 +14,10 @@
  * limitations under the License.
  */
 
-package com.android.databinding.expr;
+package android.databinding.tool.expr;
 
-import com.android.databinding.reflection.ModelAnalyzer;
-import com.android.databinding.reflection.ModelClass;
+import android.databinding.tool.reflection.ModelAnalyzer;
+import android.databinding.tool.reflection.ModelClass;
 
 import java.util.List;
 
diff --git a/compiler/src/main/java/com/android/databinding/expr/CastExpr.java b/compiler/src/main/java/android/databinding/tool/expr/CastExpr.java
similarity index 90%
rename from compiler/src/main/java/com/android/databinding/expr/CastExpr.java
rename to compiler/src/main/java/android/databinding/tool/expr/CastExpr.java
index 000f764..b4e41da 100644
--- a/compiler/src/main/java/com/android/databinding/expr/CastExpr.java
+++ b/compiler/src/main/java/android/databinding/tool/expr/CastExpr.java
@@ -14,10 +14,10 @@
  * limitations under the License.
  */
 
-package com.android.databinding.expr;
+package android.databinding.tool.expr;
 
-import com.android.databinding.reflection.ModelAnalyzer;
-import com.android.databinding.reflection.ModelClass;
+import android.databinding.tool.reflection.ModelAnalyzer;
+import android.databinding.tool.reflection.ModelClass;
 
 import java.util.List;
 
diff --git a/compiler/src/main/java/com/android/databinding/expr/ComparisonExpr.java b/compiler/src/main/java/android/databinding/tool/expr/ComparisonExpr.java
similarity index 90%
rename from compiler/src/main/java/com/android/databinding/expr/ComparisonExpr.java
rename to compiler/src/main/java/android/databinding/tool/expr/ComparisonExpr.java
index 2935729..0c237be 100644
--- a/compiler/src/main/java/com/android/databinding/expr/ComparisonExpr.java
+++ b/compiler/src/main/java/android/databinding/tool/expr/ComparisonExpr.java
@@ -14,10 +14,10 @@
  * limitations under the License.
  */
 
-package com.android.databinding.expr;
+package android.databinding.tool.expr;
 
-import com.android.databinding.reflection.ModelAnalyzer;
-import com.android.databinding.reflection.ModelClass;
+import android.databinding.tool.reflection.ModelAnalyzer;
+import android.databinding.tool.reflection.ModelClass;
 
 import java.util.List;
 
diff --git a/compiler/src/main/java/com/android/databinding/expr/Dependency.java b/compiler/src/main/java/android/databinding/tool/expr/Dependency.java
similarity index 97%
rename from compiler/src/main/java/com/android/databinding/expr/Dependency.java
rename to compiler/src/main/java/android/databinding/tool/expr/Dependency.java
index 26692d5..1678af7 100644
--- a/compiler/src/main/java/com/android/databinding/expr/Dependency.java
+++ b/compiler/src/main/java/android/databinding/tool/expr/Dependency.java
@@ -11,7 +11,7 @@
  * limitations under the License.
  */
 
-package com.android.databinding.expr;
+package android.databinding.tool.expr;
 
 public class Dependency {
     final Expr mDependant;
diff --git a/compiler/src/main/java/com/android/databinding/expr/Expr.java b/compiler/src/main/java/android/databinding/tool/expr/Expr.java
similarity index 98%
rename from compiler/src/main/java/com/android/databinding/expr/Expr.java
rename to compiler/src/main/java/android/databinding/tool/expr/Expr.java
index 9cc4b2d..a7cd412 100644
--- a/compiler/src/main/java/com/android/databinding/expr/Expr.java
+++ b/compiler/src/main/java/android/databinding/tool/expr/Expr.java
@@ -14,7 +14,7 @@
  * limitations under the License.
  */
 
-package com.android.databinding.expr;
+package android.databinding.tool.expr;
 
 import com.google.common.base.Function;
 import com.google.common.base.Joiner;
@@ -23,8 +23,8 @@
 import com.google.common.collect.Iterables;
 import com.google.common.collect.Lists;
 
-import com.android.databinding.reflection.ModelAnalyzer;
-import com.android.databinding.reflection.ModelClass;
+import android.databinding.tool.reflection.ModelAnalyzer;
+import android.databinding.tool.reflection.ModelClass;
 
 import java.util.ArrayList;
 import java.util.BitSet;
diff --git a/compiler/src/main/java/com/android/databinding/expr/ExprModel.java b/compiler/src/main/java/android/databinding/tool/expr/ExprModel.java
similarity index 98%
rename from compiler/src/main/java/com/android/databinding/expr/ExprModel.java
rename to compiler/src/main/java/android/databinding/tool/expr/ExprModel.java
index 7b8d430..e3ec30a 100644
--- a/compiler/src/main/java/com/android/databinding/expr/ExprModel.java
+++ b/compiler/src/main/java/android/databinding/tool/expr/ExprModel.java
@@ -14,17 +14,16 @@
  * limitations under the License.
  */
 
-package com.android.databinding.expr;
+package android.databinding.tool.expr;
 
 import com.google.common.base.Preconditions;
 import com.google.common.base.Predicate;
 import com.google.common.collect.Iterables;
 import com.google.common.collect.Lists;
 
-import com.android.databinding.reflection.ModelAnalyzer;
-import com.android.databinding.reflection.ModelClass;
-import com.android.databinding.util.L;
-import com.android.databinding.writer.FlagSet;
+import android.databinding.tool.reflection.ModelAnalyzer;
+import android.databinding.tool.util.L;
+import android.databinding.tool.writer.FlagSet;
 
 import java.util.ArrayList;
 import java.util.BitSet;
diff --git a/compiler/src/main/java/com/android/databinding/expr/FieldAccessExpr.java b/compiler/src/main/java/android/databinding/tool/expr/FieldAccessExpr.java
similarity index 93%
rename from compiler/src/main/java/com/android/databinding/expr/FieldAccessExpr.java
rename to compiler/src/main/java/android/databinding/tool/expr/FieldAccessExpr.java
index 6761711..754cca8 100644
--- a/compiler/src/main/java/com/android/databinding/expr/FieldAccessExpr.java
+++ b/compiler/src/main/java/android/databinding/tool/expr/FieldAccessExpr.java
@@ -14,12 +14,12 @@
  * limitations under the License.
  */
 
-package com.android.databinding.expr;
+package android.databinding.tool.expr;
 
-import com.android.databinding.reflection.ModelAnalyzer;
-import com.android.databinding.reflection.Callable;
-import com.android.databinding.reflection.ModelClass;
-import com.android.databinding.util.L;
+import android.databinding.tool.reflection.Callable;
+import android.databinding.tool.reflection.ModelAnalyzer;
+import android.databinding.tool.reflection.ModelClass;
+import android.databinding.tool.util.L;
 
 import java.util.List;
 
diff --git a/compiler/src/main/java/com/android/databinding/expr/GroupExpr.java b/compiler/src/main/java/android/databinding/tool/expr/GroupExpr.java
similarity index 87%
rename from compiler/src/main/java/com/android/databinding/expr/GroupExpr.java
rename to compiler/src/main/java/android/databinding/tool/expr/GroupExpr.java
index e21778b..8af1d68 100644
--- a/compiler/src/main/java/com/android/databinding/expr/GroupExpr.java
+++ b/compiler/src/main/java/android/databinding/tool/expr/GroupExpr.java
@@ -14,10 +14,10 @@
  * limitations under the License.
  */
 
-package com.android.databinding.expr;
+package android.databinding.tool.expr;
 
-import com.android.databinding.reflection.ModelAnalyzer;
-import com.android.databinding.reflection.ModelClass;
+import android.databinding.tool.reflection.ModelAnalyzer;
+import android.databinding.tool.reflection.ModelClass;
 
 import java.util.List;
 
diff --git a/compiler/src/main/java/com/android/databinding/expr/IdentifierExpr.java b/compiler/src/main/java/android/databinding/tool/expr/IdentifierExpr.java
similarity index 92%
rename from compiler/src/main/java/com/android/databinding/expr/IdentifierExpr.java
rename to compiler/src/main/java/android/databinding/tool/expr/IdentifierExpr.java
index a826123..5207485 100644
--- a/compiler/src/main/java/com/android/databinding/expr/IdentifierExpr.java
+++ b/compiler/src/main/java/android/databinding/tool/expr/IdentifierExpr.java
@@ -14,14 +14,14 @@
  * limitations under the License.
  */
 
-package com.android.databinding.expr;
+package android.databinding.tool.expr;
 
 import com.google.common.base.Preconditions;
 import com.google.common.collect.Lists;
 
-import com.android.databinding.reflection.ModelAnalyzer;
-import com.android.databinding.reflection.ModelClass;
-import com.android.databinding.util.L;
+import android.databinding.tool.reflection.ModelAnalyzer;
+import android.databinding.tool.reflection.ModelClass;
+import android.databinding.tool.util.L;
 
 import java.util.List;
 
diff --git a/compiler/src/main/java/com/android/databinding/expr/MathExpr.java b/compiler/src/main/java/android/databinding/tool/expr/MathExpr.java
similarity index 91%
rename from compiler/src/main/java/com/android/databinding/expr/MathExpr.java
rename to compiler/src/main/java/android/databinding/tool/expr/MathExpr.java
index 378bc3b..fbd0b3d 100644
--- a/compiler/src/main/java/com/android/databinding/expr/MathExpr.java
+++ b/compiler/src/main/java/android/databinding/tool/expr/MathExpr.java
@@ -14,10 +14,10 @@
  * limitations under the License.
  */
 
-package com.android.databinding.expr;
+package android.databinding.tool.expr;
 
-import com.android.databinding.reflection.ModelAnalyzer;
-import com.android.databinding.reflection.ModelClass;
+import android.databinding.tool.reflection.ModelAnalyzer;
+import android.databinding.tool.reflection.ModelClass;
 
 import java.util.List;
 
diff --git a/compiler/src/main/java/com/android/databinding/expr/MethodCallExpr.java b/compiler/src/main/java/android/databinding/tool/expr/MethodCallExpr.java
similarity index 89%
rename from compiler/src/main/java/com/android/databinding/expr/MethodCallExpr.java
rename to compiler/src/main/java/android/databinding/tool/expr/MethodCallExpr.java
index 9199012..491adc8 100644
--- a/compiler/src/main/java/com/android/databinding/expr/MethodCallExpr.java
+++ b/compiler/src/main/java/android/databinding/tool/expr/MethodCallExpr.java
@@ -14,16 +14,16 @@
  * limitations under the License.
  */
 
-package com.android.databinding.expr;
+package android.databinding.tool.expr;
 
 import com.google.common.collect.Iterables;
 
-import com.android.databinding.reflection.Callable.Type;
-import com.android.databinding.reflection.ModelAnalyzer;
-import com.android.databinding.reflection.Callable;
-import com.android.databinding.reflection.ModelClass;
-import com.android.databinding.reflection.ModelMethod;
-import com.android.databinding.util.L;
+import android.databinding.tool.reflection.Callable;
+import android.databinding.tool.reflection.Callable.Type;
+import android.databinding.tool.reflection.ModelAnalyzer;
+import android.databinding.tool.reflection.ModelClass;
+import android.databinding.tool.reflection.ModelMethod;
+import android.databinding.tool.util.L;
 
 import java.util.ArrayList;
 import java.util.Arrays;
diff --git a/compiler/src/main/java/com/android/databinding/expr/ResourceExpr.java b/compiler/src/main/java/android/databinding/tool/expr/ResourceExpr.java
similarity index 97%
rename from compiler/src/main/java/com/android/databinding/expr/ResourceExpr.java
rename to compiler/src/main/java/android/databinding/tool/expr/ResourceExpr.java
index 9eb5f36..6639103 100644
--- a/compiler/src/main/java/com/android/databinding/expr/ResourceExpr.java
+++ b/compiler/src/main/java/android/databinding/tool/expr/ResourceExpr.java
@@ -13,15 +13,14 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package com.android.databinding.expr;
+package android.databinding.tool.expr;
 
 import com.google.common.collect.ImmutableMap;
 
-import com.android.databinding.reflection.ModelAnalyzer;
-import com.android.databinding.reflection.ModelClass;
-import com.android.databinding.writer.WriterPackage;
+import android.databinding.tool.reflection.ModelAnalyzer;
+import android.databinding.tool.reflection.ModelClass;
+import android.databinding.tool.writer.WriterPackage;
 
-import java.util.Collections;
 import java.util.List;
 import java.util.Map;
 
diff --git a/compiler/src/main/java/com/android/databinding/expr/StaticIdentifierExpr.java b/compiler/src/main/java/android/databinding/tool/expr/StaticIdentifierExpr.java
similarity index 95%
rename from compiler/src/main/java/com/android/databinding/expr/StaticIdentifierExpr.java
rename to compiler/src/main/java/android/databinding/tool/expr/StaticIdentifierExpr.java
index 643b693..8ca5128 100644
--- a/compiler/src/main/java/com/android/databinding/expr/StaticIdentifierExpr.java
+++ b/compiler/src/main/java/android/databinding/tool/expr/StaticIdentifierExpr.java
@@ -14,7 +14,7 @@
  * limitations under the License.
  */
 
-package com.android.databinding.expr;
+package android.databinding.tool.expr;
 
 public class StaticIdentifierExpr extends IdentifierExpr {
 
diff --git a/compiler/src/main/java/com/android/databinding/expr/SymbolExpr.java b/compiler/src/main/java/android/databinding/tool/expr/SymbolExpr.java
similarity index 89%
rename from compiler/src/main/java/com/android/databinding/expr/SymbolExpr.java
rename to compiler/src/main/java/android/databinding/tool/expr/SymbolExpr.java
index 9489ee3..9e03d2f 100644
--- a/compiler/src/main/java/com/android/databinding/expr/SymbolExpr.java
+++ b/compiler/src/main/java/android/databinding/tool/expr/SymbolExpr.java
@@ -14,12 +14,12 @@
  * limitations under the License.
  */
 
-package com.android.databinding.expr;
+package android.databinding.tool.expr;
 
 import com.google.common.collect.Lists;
 
-import com.android.databinding.reflection.ModelAnalyzer;
-import com.android.databinding.reflection.ModelClass;
+import android.databinding.tool.reflection.ModelAnalyzer;
+import android.databinding.tool.reflection.ModelClass;
 
 import java.util.List;
 
diff --git a/compiler/src/main/java/com/android/databinding/expr/TernaryExpr.java b/compiler/src/main/java/android/databinding/tool/expr/TernaryExpr.java
similarity index 93%
rename from compiler/src/main/java/com/android/databinding/expr/TernaryExpr.java
rename to compiler/src/main/java/android/databinding/tool/expr/TernaryExpr.java
index 6d0f003..02e5cd7 100644
--- a/compiler/src/main/java/com/android/databinding/expr/TernaryExpr.java
+++ b/compiler/src/main/java/android/databinding/tool/expr/TernaryExpr.java
@@ -14,12 +14,12 @@
  * limitations under the License.
  */
 
-package com.android.databinding.expr;
+package android.databinding.tool.expr;
 
 import com.google.common.collect.Lists;
 
-import com.android.databinding.reflection.ModelAnalyzer;
-import com.android.databinding.reflection.ModelClass;
+import android.databinding.tool.reflection.ModelAnalyzer;
+import android.databinding.tool.reflection.ModelClass;
 
 import java.util.BitSet;
 import java.util.List;
diff --git a/compiler/src/main/java/com/android/databinding/reflection/Callable.java b/compiler/src/main/java/android/databinding/tool/reflection/Callable.java
similarity index 96%
rename from compiler/src/main/java/com/android/databinding/reflection/Callable.java
rename to compiler/src/main/java/android/databinding/tool/reflection/Callable.java
index 5c39b5c..8883124 100644
--- a/compiler/src/main/java/com/android/databinding/reflection/Callable.java
+++ b/compiler/src/main/java/android/databinding/tool/reflection/Callable.java
@@ -13,7 +13,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package com.android.databinding.reflection;
+package android.databinding.tool.reflection;
 
 public class Callable {
 
diff --git a/compiler/src/main/java/com/android/databinding/reflection/ModelAnalyzer.java b/compiler/src/main/java/android/databinding/tool/reflection/ModelAnalyzer.java
similarity index 89%
rename from compiler/src/main/java/com/android/databinding/reflection/ModelAnalyzer.java
rename to compiler/src/main/java/android/databinding/tool/reflection/ModelAnalyzer.java
index 6976f16..318eaa0 100644
--- a/compiler/src/main/java/com/android/databinding/reflection/ModelAnalyzer.java
+++ b/compiler/src/main/java/android/databinding/tool/reflection/ModelAnalyzer.java
@@ -13,20 +13,16 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package com.android.databinding.reflection;
+package android.databinding.tool.reflection;
 
 import com.google.common.base.Preconditions;
-import com.android.databinding.reflection.annotation.AnnotationAnalyzer;
-import com.android.databinding.util.L;
 
-import java.io.IOException;
-import java.net.URL;
-import java.util.ArrayList;
-import java.util.Enumeration;
-import java.util.List;
+import android.databinding.tool.reflection.annotation.AnnotationAnalyzer;
+import android.databinding.tool.util.L;
+
 import java.util.Map;
+
 import javax.annotation.processing.ProcessingEnvironment;
-import javax.lang.model.util.Types;
 
 /**
  * This is the base class for several implementations of something that
@@ -51,26 +47,26 @@
 
     public static final String OBJECT_CLASS_NAME = "java.lang.Object";
 
-    public static final String OBSERVABLE_CLASS_NAME = "android.binding.Observable";
+    public static final String OBSERVABLE_CLASS_NAME = "android.databinding.Observable";
 
-    public static final String OBSERVABLE_LIST_CLASS_NAME = "android.binding.ObservableList";
+    public static final String OBSERVABLE_LIST_CLASS_NAME = "android.databinding.ObservableList";
 
-    public static final String OBSERVABLE_MAP_CLASS_NAME = "android.binding.ObservableMap";
+    public static final String OBSERVABLE_MAP_CLASS_NAME = "android.databinding.ObservableMap";
 
     public static final String[] OBSERVABLE_FIELDS = {
-            "com.android.databinding.library.ObservableBoolean",
-            "com.android.databinding.library.ObservableByte",
-            "com.android.databinding.library.ObservableChar",
-            "com.android.databinding.library.ObservableShort",
-            "com.android.databinding.library.ObservableInt",
-            "com.android.databinding.library.ObservableLong",
-            "com.android.databinding.library.ObservableFloat",
-            "com.android.databinding.library.ObservableDouble",
-            "com.android.databinding.library.ObservableField",
+            "android.databinding.ObservableBoolean",
+            "android.databinding.ObservableByte",
+            "android.databinding.ObservableChar",
+            "android.databinding.ObservableShort",
+            "android.databinding.ObservableInt",
+            "android.databinding.ObservableLong",
+            "android.databinding.ObservableFloat",
+            "android.databinding.ObservableDouble",
+            "android.databinding.ObservableField",
     };
 
     public static final String VIEW_DATA_BINDING =
-            "com.android.databinding.library.ViewDataBinding";
+            "android.databinding.ViewDataBinding";
 
     private ModelClass[] mListTypes;
     private ModelClass mMapType;
diff --git a/compiler/src/main/java/com/android/databinding/reflection/ModelClass.java b/compiler/src/main/java/android/databinding/tool/reflection/ModelClass.java
similarity index 98%
rename from compiler/src/main/java/com/android/databinding/reflection/ModelClass.java
rename to compiler/src/main/java/android/databinding/tool/reflection/ModelClass.java
index 87334b7..5b05a3e 100644
--- a/compiler/src/main/java/com/android/databinding/reflection/ModelClass.java
+++ b/compiler/src/main/java/android/databinding/tool/reflection/ModelClass.java
@@ -13,12 +13,14 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package com.android.databinding.reflection;
+package android.databinding.tool.reflection;
 
-import com.android.databinding.util.L;
+import android.databinding.tool.util.L;
 
 import org.apache.commons.lang3.StringUtils;
 
+import android.databinding.tool.reflection.ModelAnalyzer;
+
 import java.util.ArrayList;
 import java.util.List;
 
@@ -290,7 +292,7 @@
 
     /**
      * Returns the JNI description of the method which can be used to lookup it in SDK.
-     * @see com.android.databinding.reflection.TypeUtil
+     * @see TypeUtil
      */
     public abstract String getJniDescription();
 
diff --git a/compiler/src/main/java/com/android/databinding/reflection/ModelField.java b/compiler/src/main/java/android/databinding/tool/reflection/ModelField.java
similarity index 96%
rename from compiler/src/main/java/com/android/databinding/reflection/ModelField.java
rename to compiler/src/main/java/android/databinding/tool/reflection/ModelField.java
index e6cf0e1..0cde85b 100644
--- a/compiler/src/main/java/com/android/databinding/reflection/ModelField.java
+++ b/compiler/src/main/java/android/databinding/tool/reflection/ModelField.java
@@ -13,7 +13,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package com.android.databinding.reflection;
+package android.databinding.tool.reflection;
 
 public abstract class ModelField {
 
diff --git a/compiler/src/main/java/com/android/databinding/reflection/ModelMethod.java b/compiler/src/main/java/android/databinding/tool/reflection/ModelMethod.java
similarity index 97%
rename from compiler/src/main/java/com/android/databinding/reflection/ModelMethod.java
rename to compiler/src/main/java/android/databinding/tool/reflection/ModelMethod.java
index af6c6b7..b4ee671 100644
--- a/compiler/src/main/java/com/android/databinding/reflection/ModelMethod.java
+++ b/compiler/src/main/java/android/databinding/tool/reflection/ModelMethod.java
@@ -13,9 +13,9 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package com.android.databinding.reflection;
+package android.databinding.tool.reflection;
 
-import android.binding.Bindable;
+import android.databinding.Bindable;
 
 import java.util.List;
 
@@ -50,7 +50,7 @@
 
     /**
      * Returns the JNI description of the method which can be used to lookup it in SDK.
-     * @see com.android.databinding.reflection.TypeUtil
+     * @see TypeUtil
      */
     public abstract String getJniDescription();
 
diff --git a/compiler/src/main/java/com/android/databinding/reflection/SdkUtil.java b/compiler/src/main/java/android/databinding/tool/reflection/SdkUtil.java
similarity index 98%
rename from compiler/src/main/java/com/android/databinding/reflection/SdkUtil.java
rename to compiler/src/main/java/android/databinding/tool/reflection/SdkUtil.java
index 2031252..177935a 100644
--- a/compiler/src/main/java/com/android/databinding/reflection/SdkUtil.java
+++ b/compiler/src/main/java/android/databinding/tool/reflection/SdkUtil.java
@@ -11,13 +11,16 @@
  * limitations under the License.
  */
 
-package com.android.databinding.reflection;
+package android.databinding.tool.reflection;
 
 import com.google.common.base.Preconditions;
-import com.android.databinding.util.L;
+
 import org.w3c.dom.Document;
 import org.w3c.dom.Node;
 import org.w3c.dom.NodeList;
+
+import android.databinding.tool.util.L;
+
 import java.io.File;
 import java.util.HashMap;
 import java.util.Map;
diff --git a/compiler/src/main/java/com/android/databinding/reflection/TypeUtil.java b/compiler/src/main/java/android/databinding/tool/reflection/TypeUtil.java
similarity index 96%
rename from compiler/src/main/java/com/android/databinding/reflection/TypeUtil.java
rename to compiler/src/main/java/android/databinding/tool/reflection/TypeUtil.java
index 50ae3c2..f396bd7 100644
--- a/compiler/src/main/java/com/android/databinding/reflection/TypeUtil.java
+++ b/compiler/src/main/java/android/databinding/tool/reflection/TypeUtil.java
@@ -14,7 +14,7 @@
  * limitations under the License.
  */
 
-package com.android.databinding.reflection;
+package android.databinding.tool.reflection;
 
 public abstract class TypeUtil {
 
diff --git a/compiler/src/main/java/com/android/databinding/reflection/annotation/AnnotationAnalyzer.java b/compiler/src/main/java/android/databinding/tool/reflection/annotation/AnnotationAnalyzer.java
similarity index 94%
rename from compiler/src/main/java/com/android/databinding/reflection/annotation/AnnotationAnalyzer.java
rename to compiler/src/main/java/android/databinding/tool/reflection/annotation/AnnotationAnalyzer.java
index 4bca97e..d01f579 100644
--- a/compiler/src/main/java/com/android/databinding/reflection/annotation/AnnotationAnalyzer.java
+++ b/compiler/src/main/java/android/databinding/tool/reflection/annotation/AnnotationAnalyzer.java
@@ -13,20 +13,16 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package com.android.databinding.reflection.annotation;
+package android.databinding.tool.reflection.annotation;
 
 import com.google.common.collect.ImmutableMap;
 
-import com.android.databinding.reflection.ModelAnalyzer;
-import com.android.databinding.reflection.ModelClass;
-import com.android.databinding.reflection.TypeUtil;
-import com.android.databinding.util.L;
+import android.databinding.tool.reflection.ModelAnalyzer;
+import android.databinding.tool.reflection.ModelClass;
+import android.databinding.tool.reflection.TypeUtil;
+import android.databinding.tool.util.L;
 
-import java.io.IOException;
-import java.net.URL;
 import java.util.ArrayList;
-import java.util.Enumeration;
-import java.util.List;
 import java.util.Map;
 
 import javax.annotation.processing.ProcessingEnvironment;
diff --git a/compiler/src/main/java/com/android/databinding/reflection/annotation/AnnotationClass.java b/compiler/src/main/java/android/databinding/tool/reflection/annotation/AnnotationClass.java
similarity index 95%
rename from compiler/src/main/java/com/android/databinding/reflection/annotation/AnnotationClass.java
rename to compiler/src/main/java/android/databinding/tool/reflection/annotation/AnnotationClass.java
index c017d8e..a1bec3c 100644
--- a/compiler/src/main/java/com/android/databinding/reflection/annotation/AnnotationClass.java
+++ b/compiler/src/main/java/android/databinding/tool/reflection/annotation/AnnotationClass.java
@@ -13,15 +13,14 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package com.android.databinding.reflection.annotation;
+package android.databinding.tool.reflection.annotation;
 
-import com.android.databinding.reflection.ModelAnalyzer;
-import com.android.databinding.reflection.ModelClass;
-import com.android.databinding.reflection.ModelField;
-import com.android.databinding.reflection.ModelMethod;
-import com.android.databinding.reflection.SdkUtil;
-import com.android.databinding.reflection.TypeUtil;
-import com.android.databinding.util.L;
+import android.databinding.tool.reflection.ModelAnalyzer;
+import android.databinding.tool.reflection.ModelClass;
+import android.databinding.tool.reflection.ModelField;
+import android.databinding.tool.reflection.ModelMethod;
+import android.databinding.tool.reflection.TypeUtil;
+import android.databinding.tool.util.L;
 
 import java.util.ArrayList;
 import java.util.List;
diff --git a/compiler/src/main/java/com/android/databinding/reflection/annotation/AnnotationField.java b/compiler/src/main/java/android/databinding/tool/reflection/annotation/AnnotationField.java
similarity index 91%
rename from compiler/src/main/java/com/android/databinding/reflection/annotation/AnnotationField.java
rename to compiler/src/main/java/android/databinding/tool/reflection/annotation/AnnotationField.java
index af5b89a..9373c6c 100644
--- a/compiler/src/main/java/com/android/databinding/reflection/annotation/AnnotationField.java
+++ b/compiler/src/main/java/android/databinding/tool/reflection/annotation/AnnotationField.java
@@ -13,12 +13,11 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package com.android.databinding.reflection.annotation;
+package android.databinding.tool.reflection.annotation;
 
-import com.android.databinding.reflection.ModelClass;
-import com.android.databinding.reflection.ModelField;
-
-import android.binding.Bindable;
+import android.databinding.Bindable;
+import android.databinding.tool.reflection.ModelClass;
+import android.databinding.tool.reflection.ModelField;
 
 import javax.lang.model.element.Modifier;
 import javax.lang.model.element.TypeElement;
diff --git a/compiler/src/main/java/com/android/databinding/reflection/annotation/AnnotationMethod.java b/compiler/src/main/java/android/databinding/tool/reflection/annotation/AnnotationMethod.java
similarity index 91%
rename from compiler/src/main/java/com/android/databinding/reflection/annotation/AnnotationMethod.java
rename to compiler/src/main/java/android/databinding/tool/reflection/annotation/AnnotationMethod.java
index 69192dd..00e1a4e 100644
--- a/compiler/src/main/java/com/android/databinding/reflection/annotation/AnnotationMethod.java
+++ b/compiler/src/main/java/android/databinding/tool/reflection/annotation/AnnotationMethod.java
@@ -13,14 +13,13 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package com.android.databinding.reflection.annotation;
+package android.databinding.tool.reflection.annotation;
 
-import com.android.databinding.reflection.ModelClass;
-import com.android.databinding.reflection.ModelMethod;
-import com.android.databinding.reflection.SdkUtil;
-import com.android.databinding.reflection.TypeUtil;
-
-import android.binding.Bindable;
+import android.databinding.Bindable;
+import android.databinding.tool.reflection.ModelClass;
+import android.databinding.tool.reflection.ModelMethod;
+import android.databinding.tool.reflection.SdkUtil;
+import android.databinding.tool.reflection.TypeUtil;
 
 import java.util.List;
 
diff --git a/compiler/src/main/java/com/android/databinding/reflection/annotation/AnnotationTypeUtil.java b/compiler/src/main/java/android/databinding/tool/reflection/annotation/AnnotationTypeUtil.java
similarity index 94%
rename from compiler/src/main/java/com/android/databinding/reflection/annotation/AnnotationTypeUtil.java
rename to compiler/src/main/java/android/databinding/tool/reflection/annotation/AnnotationTypeUtil.java
index 03f93dc..ebc6a07 100644
--- a/compiler/src/main/java/com/android/databinding/reflection/annotation/AnnotationTypeUtil.java
+++ b/compiler/src/main/java/android/databinding/tool/reflection/annotation/AnnotationTypeUtil.java
@@ -14,11 +14,11 @@
  * limitations under the License.
  */
 
-package com.android.databinding.reflection.annotation;
+package android.databinding.tool.reflection.annotation;
 
-import com.android.databinding.reflection.ModelClass;
-import com.android.databinding.reflection.ModelMethod;
-import com.android.databinding.reflection.TypeUtil;
+import android.databinding.tool.reflection.ModelClass;
+import android.databinding.tool.reflection.ModelMethod;
+import android.databinding.tool.reflection.TypeUtil;
 
 import java.util.List;
 
diff --git a/compiler/src/main/java/com/android/databinding/store/LayoutFileParser.java b/compiler/src/main/java/android/databinding/tool/store/LayoutFileParser.java
similarity index 96%
rename from compiler/src/main/java/com/android/databinding/store/LayoutFileParser.java
rename to compiler/src/main/java/android/databinding/tool/store/LayoutFileParser.java
index 99efe6b..8889b94 100644
--- a/compiler/src/main/java/com/android/databinding/store/LayoutFileParser.java
+++ b/compiler/src/main/java/android/databinding/tool/store/LayoutFileParser.java
@@ -11,14 +11,10 @@
  * limitations under the License.
  */
 
-package com.android.databinding.store;
+package android.databinding.tool.store;
 
 import com.google.common.base.Preconditions;
 
-import com.android.databinding.util.L;
-import com.android.databinding.util.ParserHelper;
-import com.android.databinding.util.XmlEditor;
-
 import org.apache.commons.io.FileUtils;
 import org.apache.commons.lang3.ObjectUtils;
 import org.apache.commons.lang3.StringUtils;
@@ -28,11 +24,14 @@
 import org.w3c.dom.NodeList;
 import org.xml.sax.SAXException;
 
+import android.databinding.tool.util.L;
+import android.databinding.tool.util.ParserHelper;
+import android.databinding.tool.util.XmlEditor;
+
 import java.io.File;
 import java.io.IOException;
 import java.util.ArrayList;
 import java.util.List;
-import java.util.Objects;
 
 import javax.xml.parsers.DocumentBuilder;
 import javax.xml.parsers.DocumentBuilderFactory;
@@ -45,7 +44,7 @@
 
 /**
  * Gets the list of XML files and creates a list of
- * {@link com.android.databinding.store.ResourceBundle} that can be persistent or converted to
+ * {@link android.databinding.tool.store.ResourceBundle} that can be persistent or converted to
  * LayoutBinder.
  */
 public class LayoutFileParser {
diff --git a/compiler/src/main/java/com/android/databinding/store/ResourceBundle.java b/compiler/src/main/java/android/databinding/tool/store/ResourceBundle.java
similarity index 98%
rename from compiler/src/main/java/com/android/databinding/store/ResourceBundle.java
rename to compiler/src/main/java/android/databinding/tool/store/ResourceBundle.java
index a781417..db37cc6 100644
--- a/compiler/src/main/java/com/android/databinding/store/ResourceBundle.java
+++ b/compiler/src/main/java/android/databinding/tool/store/ResourceBundle.java
@@ -11,14 +11,14 @@
  * limitations under the License.
  */
 
-package com.android.databinding.store;
+package android.databinding.tool.store;
 
 import com.google.common.base.Preconditions;
 import com.google.common.base.Predicate;
 import com.google.common.collect.Iterables;
 
-import com.android.databinding.util.L;
-import com.android.databinding.util.ParserHelper;
+import android.databinding.tool.util.L;
+import android.databinding.tool.util.ParserHelper;
 
 import java.io.Serializable;
 import java.util.ArrayList;
@@ -158,7 +158,7 @@
                         if (target.isBinder()) {
                             L.d("overriding %s as base binder", target.getId());
                             viewTypes.put(target.mId,
-                                    "com.android.databinding.library.ViewDataBinding");
+                                    "android.databinding.ViewDataBinding");
                         } else {
                             L.d("overriding %s as base view", target.getId());
                             viewTypes.put(target.mId, "android.view.View");
diff --git a/compiler/src/main/java/com/android/databinding/store/SetterStore.java b/compiler/src/main/java/android/databinding/tool/store/SetterStore.java
similarity index 97%
rename from compiler/src/main/java/com/android/databinding/store/SetterStore.java
rename to compiler/src/main/java/android/databinding/tool/store/SetterStore.java
index fb5c82a..3a53c2c 100644
--- a/compiler/src/main/java/com/android/databinding/store/SetterStore.java
+++ b/compiler/src/main/java/android/databinding/tool/store/SetterStore.java
@@ -13,23 +13,18 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package com.android.databinding.store;
-
-import com.android.databinding.reflection.ModelAnalyzer;
-import com.android.databinding.reflection.ModelClass;
-import com.android.databinding.reflection.ModelMethod;
-import com.android.databinding.util.GenerationalClassUtil;
-import com.android.databinding.util.L;
+package android.databinding.tool.store;
 
 import org.apache.commons.lang3.StringUtils;
 
-import java.io.File;
+import android.databinding.tool.reflection.ModelAnalyzer;
+import android.databinding.tool.reflection.ModelClass;
+import android.databinding.tool.reflection.ModelMethod;
+import android.databinding.tool.util.GenerationalClassUtil;
+import android.databinding.tool.util.L;
+
 import java.io.IOException;
-import java.io.InputStream;
-import java.io.ObjectInputStream;
-import java.io.ObjectOutputStream;
 import java.io.Serializable;
-import java.net.URL;
 import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.HashMap;
@@ -37,9 +32,7 @@
 import java.util.Map;
 import java.util.Objects;
 import java.util.Set;
-import java.util.jar.JarFile;
 
-import javax.annotation.processing.Filer;
 import javax.annotation.processing.ProcessingEnvironment;
 import javax.lang.model.element.ExecutableElement;
 import javax.lang.model.element.TypeElement;
@@ -47,8 +40,6 @@
 import javax.lang.model.type.ArrayType;
 import javax.lang.model.type.DeclaredType;
 import javax.lang.model.type.TypeMirror;
-import javax.tools.FileObject;
-import javax.tools.StandardLocation;
 
 public class SetterStore {
 
diff --git a/compiler/src/main/java/com/android/databinding/util/GenerationalClassUtil.java b/compiler/src/main/java/android/databinding/tool/util/GenerationalClassUtil.java
similarity index 98%
rename from compiler/src/main/java/com/android/databinding/util/GenerationalClassUtil.java
rename to compiler/src/main/java/android/databinding/tool/util/GenerationalClassUtil.java
index c970ad5..e7373ac 100644
--- a/compiler/src/main/java/com/android/databinding/util/GenerationalClassUtil.java
+++ b/compiler/src/main/java/android/databinding/tool/util/GenerationalClassUtil.java
@@ -14,9 +14,7 @@
  * limitations under the License.
  */
 
-package com.android.databinding.util;
-
-import com.android.databinding.util.L;
+package android.databinding.tool.util;
 
 import org.apache.commons.io.FileUtils;
 import org.apache.commons.io.IOUtils;
@@ -24,7 +22,6 @@
 import org.apache.commons.io.filefilter.TrueFileFilter;
 
 import java.io.File;
-import java.io.FileInputStream;
 import java.io.IOException;
 import java.io.InputStream;
 import java.io.ObjectInputStream;
diff --git a/compiler/src/main/java/com/android/databinding/util/L.java b/compiler/src/main/java/android/databinding/tool/util/L.java
similarity index 92%
rename from compiler/src/main/java/com/android/databinding/util/L.java
rename to compiler/src/main/java/android/databinding/tool/util/L.java
index eea89a2..5439f59 100644
--- a/compiler/src/main/java/com/android/databinding/util/L.java
+++ b/compiler/src/main/java/android/databinding/tool/util/L.java
@@ -14,13 +14,13 @@
  * limitations under the License.
  */
 
-package com.android.databinding.util;
-
-import com.android.databinding.reflection.annotation.AnnotationAnalyzer;
-import com.android.databinding.reflection.ModelAnalyzer;
+package android.databinding.tool.util;
 
 import org.apache.commons.lang3.exception.ExceptionUtils;
 
+import android.databinding.tool.reflection.ModelAnalyzer;
+import android.databinding.tool.reflection.annotation.AnnotationAnalyzer;
+
 import javax.tools.Diagnostic;
 
 public class L {
diff --git a/compiler/src/main/java/com/android/databinding/writer/AnnotationJavaFileWriter.java b/compiler/src/main/java/android/databinding/tool/writer/AnnotationJavaFileWriter.java
similarity index 88%
rename from compiler/src/main/java/com/android/databinding/writer/AnnotationJavaFileWriter.java
rename to compiler/src/main/java/android/databinding/tool/writer/AnnotationJavaFileWriter.java
index d24ac04..4089905 100644
--- a/compiler/src/main/java/com/android/databinding/writer/AnnotationJavaFileWriter.java
+++ b/compiler/src/main/java/android/databinding/tool/writer/AnnotationJavaFileWriter.java
@@ -13,21 +13,16 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package com.android.databinding.writer;
+package android.databinding.tool.writer;
 
-import com.google.common.base.Preconditions;
-
-import com.android.databinding.util.L;
-
-import org.apache.commons.io.FileUtils;
 import org.apache.commons.io.IOUtils;
 
-import java.io.File;
+import android.databinding.tool.util.L;
+
 import java.io.IOException;
 import java.io.Writer;
 
 import javax.annotation.processing.ProcessingEnvironment;
-import javax.tools.Diagnostic;
 import javax.tools.JavaFileObject;
 
 public class AnnotationJavaFileWriter extends JavaFileWriter {
diff --git a/compiler/src/main/java/com/android/databinding/writer/FlagSet.java b/compiler/src/main/java/android/databinding/tool/writer/FlagSet.java
similarity index 98%
rename from compiler/src/main/java/com/android/databinding/writer/FlagSet.java
rename to compiler/src/main/java/android/databinding/tool/writer/FlagSet.java
index 3b5e343..1751bf6 100644
--- a/compiler/src/main/java/com/android/databinding/writer/FlagSet.java
+++ b/compiler/src/main/java/android/databinding/tool/writer/FlagSet.java
@@ -14,7 +14,7 @@
  * limitations under the License.
  */
 
-package com.android.databinding.writer;
+package android.databinding.tool.writer;
 
 import java.util.Arrays;
 import java.util.BitSet;
diff --git a/compiler/src/main/java/com/android/databinding/writer/JavaFileWriter.java b/compiler/src/main/java/android/databinding/tool/writer/JavaFileWriter.java
similarity index 93%
rename from compiler/src/main/java/com/android/databinding/writer/JavaFileWriter.java
rename to compiler/src/main/java/android/databinding/tool/writer/JavaFileWriter.java
index 9fa9347..d4e0565 100644
--- a/compiler/src/main/java/com/android/databinding/writer/JavaFileWriter.java
+++ b/compiler/src/main/java/android/databinding/tool/writer/JavaFileWriter.java
@@ -11,12 +11,12 @@
  * limitations under the License.
  */
 
-package com.android.databinding.writer;
-
-import com.android.databinding.util.L;
+package android.databinding.tool.writer;
 
 import org.apache.commons.io.FileUtils;
 
+import android.databinding.tool.util.L;
+
 import java.io.File;
 import java.io.IOException;
 
diff --git a/compiler/src/main/kotlin/com/android/databinding/ext/ext.kt b/compiler/src/main/kotlin/android/databinding/tool/ext/ext.kt
similarity index 89%
rename from compiler/src/main/kotlin/com/android/databinding/ext/ext.kt
rename to compiler/src/main/kotlin/android/databinding/tool/ext/ext.kt
index 11804ff..9d950b1 100644
--- a/compiler/src/main/kotlin/com/android/databinding/ext/ext.kt
+++ b/compiler/src/main/kotlin/android/databinding/tool/ext/ext.kt
@@ -11,15 +11,15 @@
  * limitations under the License.
  */
 
-package com.android.databinding.ext
+package android.databinding.tool.ext
 
 import kotlin.properties.ReadOnlyProperty
 import kotlin.properties.Delegates
-import com.android.databinding.ext.joinToCamelCase
-import com.android.databinding.ext.joinToCamelCaseAsVar
-import com.android.databinding.reflection.ModelAnalyzer
-import com.android.databinding.reflection.ModelClass
-import com.android.databinding.reflection.ModelAnalyzer
+import android.databinding.tool.ext.joinToCamelCase
+import android.databinding.tool.ext.joinToCamelCaseAsVar
+import android.databinding.tool.reflection.ModelAnalyzer
+import android.databinding.tool.reflection.ModelClass
+import android.databinding.tool.reflection.ModelAnalyzer
 
 private class LazyExt<K, T>(private val initializer: (k : K) -> T) : ReadOnlyProperty<K, T> {
     private val mapping = hashMapOf<K, T>()
diff --git a/compiler/src/main/kotlin/com/android/databinding/ext/list_ext.kt b/compiler/src/main/kotlin/android/databinding/tool/ext/list_ext.kt
similarity index 91%
rename from compiler/src/main/kotlin/com/android/databinding/ext/list_ext.kt
rename to compiler/src/main/kotlin/android/databinding/tool/ext/list_ext.kt
index dee5c1b..12c8af2 100644
--- a/compiler/src/main/kotlin/com/android/databinding/ext/list_ext.kt
+++ b/compiler/src/main/kotlin/android/databinding/tool/ext/list_ext.kt
@@ -14,10 +14,10 @@
  * limitations under the License.
  */
 
-package com.android.databinding.ext
+package android.databinding.tool.ext
 
-import com.android.databinding.ext.toCamelCase
-import com.android.databinding.ext.toCamelCaseAsVar
+import android.databinding.tool.ext.toCamelCase
+import android.databinding.tool.ext.toCamelCaseAsVar
 
 public fun List<String>.joinToCamelCase(): String = when(size()) {
     0 -> throw IllegalArgumentException("invalid section size, cannot be zero")
diff --git a/compiler/src/main/kotlin/com/android/databinding/ext/node_ext.kt b/compiler/src/main/kotlin/android/databinding/tool/ext/node_ext.kt
similarity index 97%
rename from compiler/src/main/kotlin/com/android/databinding/ext/node_ext.kt
rename to compiler/src/main/kotlin/android/databinding/tool/ext/node_ext.kt
index 4ddc079..089e3c8 100644
--- a/compiler/src/main/kotlin/com/android/databinding/ext/node_ext.kt
+++ b/compiler/src/main/kotlin/android/databinding/tool/ext/node_ext.kt
@@ -14,7 +14,7 @@
  * limitations under the License.
  */
 
-package com.android.databinding.ext
+package android.databinding.tool.ext
 
 import org.w3c.dom.Node
 import org.w3c.dom.NodeList
diff --git a/compiler/src/main/kotlin/com/android/databinding/util/Log.kt b/compiler/src/main/kotlin/android/databinding/tool/util/Log.kt
similarity index 95%
rename from compiler/src/main/kotlin/com/android/databinding/util/Log.kt
rename to compiler/src/main/kotlin/android/databinding/tool/util/Log.kt
index 28c1807..fb6eb35 100644
--- a/compiler/src/main/kotlin/com/android/databinding/util/Log.kt
+++ b/compiler/src/main/kotlin/android/databinding/tool/util/Log.kt
@@ -14,7 +14,7 @@
  * limitations under the License.
  */
 
-package com.android.databinding.util
+package android.databinding.tool.util
 
 object Log {
     fun d(s : String) {
diff --git a/compiler/src/main/kotlin/com/android/databinding/util/ParserHelper.kt b/compiler/src/main/kotlin/android/databinding/tool/util/ParserHelper.kt
similarity index 95%
rename from compiler/src/main/kotlin/com/android/databinding/util/ParserHelper.kt
rename to compiler/src/main/kotlin/android/databinding/tool/util/ParserHelper.kt
index 3a898a1..6972448 100644
--- a/compiler/src/main/kotlin/com/android/databinding/util/ParserHelper.kt
+++ b/compiler/src/main/kotlin/android/databinding/tool/util/ParserHelper.kt
@@ -11,7 +11,7 @@
  * limitations under the License.
  */
 
-package com.android.databinding.util
+package android.databinding.tool.util
 
 object ParserHelper {
     public fun toClassName(name:String) : String  {
diff --git a/compiler/src/main/kotlin/com/android/databinding/util/XmlEditor.kt b/compiler/src/main/kotlin/android/databinding/tool/util/XmlEditor.kt
similarity index 96%
rename from compiler/src/main/kotlin/com/android/databinding/util/XmlEditor.kt
rename to compiler/src/main/kotlin/android/databinding/tool/util/XmlEditor.kt
index ad79405..bea9df5 100644
--- a/compiler/src/main/kotlin/com/android/databinding/util/XmlEditor.kt
+++ b/compiler/src/main/kotlin/android/databinding/tool/util/XmlEditor.kt
@@ -14,19 +14,19 @@
  * limitations under the License.
  */
 
-package com.android.databinding.util
+package android.databinding.tool.util
 
 import java.io.File
 import org.antlr.v4.runtime.ANTLRInputStream
 import java.io.FileReader
-import com.android.databinding.XMLLexer
+import android.databinding.parser.XMLLexer
 import org.antlr.v4.runtime.CommonTokenStream
-import com.android.databinding.XMLParser
-import com.android.databinding.log
-import com.android.databinding.XMLParserBaseVisitor
-import com.android.databinding.Position
-import com.android.databinding.toPosition
-import com.android.databinding.toEndPosition
+import android.databinding.parser.XMLParser
+import android.databinding.parser.log
+import android.databinding.parser.XMLParserBaseVisitor
+import android.databinding.parser.Position
+import android.databinding.parser.toPosition
+import android.databinding.parser.toEndPosition
 import java.util.Comparator
 import com.google.common.base.Preconditions
 import java.util.ArrayList
diff --git a/compiler/src/main/kotlin/com/android/databinding/writer/DataBinderWriter.kt b/compiler/src/main/kotlin/android/databinding/tool/writer/DataBinderWriter.kt
similarity index 89%
rename from compiler/src/main/kotlin/com/android/databinding/writer/DataBinderWriter.kt
rename to compiler/src/main/kotlin/android/databinding/tool/writer/DataBinderWriter.kt
index 7b3638e..6f3cdc5 100644
--- a/compiler/src/main/kotlin/com/android/databinding/writer/DataBinderWriter.kt
+++ b/compiler/src/main/kotlin/android/databinding/tool/writer/DataBinderWriter.kt
@@ -11,18 +11,18 @@
  * limitations under the License.
  */
 
-package com.android.databinding.writer
+package android.databinding.tool.writer
 
-import com.android.databinding.LayoutBinder
+import android.databinding.tool.LayoutBinder
 
 class DataBinderWriter(val pkg: String, val projectPackage: String, val className: String, val layoutBinders : List<LayoutBinder> ) {
     fun write() =
             kcode("") {
                 nl("package $pkg;")
                 nl("import $projectPackage.BR;")
-                nl("public class $className implements com.android.databinding.library.DataBinderMapper {") {
+                nl("class $className implements android.databinding.DataBinderMapper {") {
                     tab("@Override")
-                    tab("public com.android.databinding.library.ViewDataBinding getDataBinder(android.view.View view, int layoutId) {") {
+                    tab("public android.databinding.ViewDataBinding getDataBinder(android.view.View view, int layoutId) {") {
                         tab("switch(layoutId) {") {
                             layoutBinders.groupBy{it.getLayoutname()}.forEach {
                                 tab("case ${it.value.first!!.getModulePackage()}.R.layout.${it.value.first!!.getLayoutname()}:") {
diff --git a/compiler/src/main/kotlin/com/android/databinding/writer/KCode.kt b/compiler/src/main/kotlin/android/databinding/tool/writer/KCode.kt
similarity index 98%
rename from compiler/src/main/kotlin/com/android/databinding/writer/KCode.kt
rename to compiler/src/main/kotlin/android/databinding/tool/writer/KCode.kt
index 0456a47..f09d018 100644
--- a/compiler/src/main/kotlin/com/android/databinding/writer/KCode.kt
+++ b/compiler/src/main/kotlin/android/databinding/tool/writer/KCode.kt
@@ -11,7 +11,7 @@
  * limitations under the License.
  */
 
-package com.android.databinding.writer
+package android.databinding.tool.writer
 
 import java.util.BitSet
 
diff --git a/compiler/src/main/kotlin/com/android/databinding/writer/LayoutBinderWriter.kt b/compiler/src/main/kotlin/android/databinding/tool/writer/LayoutBinderWriter.kt
similarity index 95%
rename from compiler/src/main/kotlin/com/android/databinding/writer/LayoutBinderWriter.kt
rename to compiler/src/main/kotlin/android/databinding/tool/writer/LayoutBinderWriter.kt
index e82de91..64b17c7 100644
--- a/compiler/src/main/kotlin/com/android/databinding/writer/LayoutBinderWriter.kt
+++ b/compiler/src/main/kotlin/android/databinding/tool/writer/LayoutBinderWriter.kt
@@ -11,34 +11,34 @@
  * limitations under the License.
  */
 
-package com.android.databinding.writer
+package android.databinding.tool.writer
 
-import com.android.databinding.LayoutBinder
-import com.android.databinding.expr.Expr
+import android.databinding.tool.LayoutBinder
+import android.databinding.tool.expr.Expr
 import kotlin.properties.Delegates
-import com.android.databinding.ext.joinToCamelCaseAsVar
-import com.android.databinding.BindingTarget
-import com.android.databinding.expr.IdentifierExpr
-import com.android.databinding.util.Log
+import android.databinding.tool.ext.joinToCamelCaseAsVar
+import android.databinding.tool.BindingTarget
+import android.databinding.tool.expr.IdentifierExpr
+import android.databinding.tool.util.Log
 import java.util.BitSet
-import com.android.databinding.expr.ExprModel
+import android.databinding.tool.expr.ExprModel
 import java.util.Arrays
-import com.android.databinding.expr.TernaryExpr
-import com.android.databinding.expr.FieldAccessExpr
-import com.android.databinding.expr.ComparisonExpr
-import com.android.databinding.expr.GroupExpr
-import com.android.databinding.expr.MathExpr
-import com.android.databinding.expr.MethodCallExpr
-import com.android.databinding.expr.StaticIdentifierExpr
-import com.android.databinding.expr.SymbolExpr
-import com.android.databinding.ext.androidId
-import com.android.databinding.ext.lazy
-import com.android.databinding.ext.br
-import com.android.databinding.expr.ResourceExpr
-import com.android.databinding.expr.BracketExpr
-import com.android.databinding.reflection.Callable
-import com.android.databinding.expr.CastExpr
-import com.android.databinding.reflection.ModelAnalyzer
+import android.databinding.tool.expr.TernaryExpr
+import android.databinding.tool.expr.FieldAccessExpr
+import android.databinding.tool.expr.ComparisonExpr
+import android.databinding.tool.expr.GroupExpr
+import android.databinding.tool.expr.MathExpr
+import android.databinding.tool.expr.MethodCallExpr
+import android.databinding.tool.expr.StaticIdentifierExpr
+import android.databinding.tool.expr.SymbolExpr
+import android.databinding.tool.ext.androidId
+import android.databinding.tool.ext.lazy
+import android.databinding.tool.ext.br
+import android.databinding.tool.expr.ResourceExpr
+import android.databinding.tool.expr.BracketExpr
+import android.databinding.tool.reflection.Callable
+import android.databinding.tool.expr.CastExpr
+import android.databinding.tool.reflection.ModelAnalyzer
 
 fun String.stripNonJava() = this.split("[^a-zA-Z0-9]").map{ it.trim() }.joinToCamelCaseAsVar()
 
@@ -728,9 +728,9 @@
 
     public fun writeBaseClass() : String =
         kcode("package ${layoutBinder.getPackage()};") {
-            nl("import android.binding.Bindable;")
-            nl("import com.android.databinding.library.DataBindingUtil;")
-            nl("import com.android.databinding.library.ViewDataBinding;")
+            nl("import android.databinding.Bindable;")
+            nl("import android.databinding.DataBindingUtil;")
+            nl("import android.databinding.ViewDataBinding;")
             nl("public abstract class ${baseClassName} extends ViewDataBinding {")
             tab("protected ${baseClassName}(android.view.View root, int localFieldCount) {") {
                 tab("super(root, localFieldCount);")
diff --git a/baseLibrary/src/test/java/android/binding/CallbackRegistryTest.java b/compiler/src/test/java/android/databinding/CallbackRegistryTest.java
similarity index 99%
rename from baseLibrary/src/test/java/android/binding/CallbackRegistryTest.java
rename to compiler/src/test/java/android/databinding/CallbackRegistryTest.java
index d567f34..fd1562d 100644
--- a/baseLibrary/src/test/java/android/binding/CallbackRegistryTest.java
+++ b/compiler/src/test/java/android/databinding/CallbackRegistryTest.java
@@ -13,7 +13,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package android.binding;
+package android.databinding;
 
 import org.junit.Test;
 
@@ -310,4 +310,4 @@
         registry2 = registry.clone();
         assertFalse(registry2.isEmpty());
     }
-}
\ No newline at end of file
+}
diff --git a/compiler/src/test/java/com/android/databinding/ExpressionVisitorTest.java b/compiler/src/test/java/android/databinding/tool/ExpressionVisitorTest.java
similarity index 88%
rename from compiler/src/test/java/com/android/databinding/ExpressionVisitorTest.java
rename to compiler/src/test/java/android/databinding/tool/ExpressionVisitorTest.java
index abf8f9a..e3f3345 100644
--- a/compiler/src/test/java/com/android/databinding/ExpressionVisitorTest.java
+++ b/compiler/src/test/java/android/databinding/tool/ExpressionVisitorTest.java
@@ -14,31 +14,33 @@
  * limitations under the License.
  */
 
-package com.android.databinding;
-
-import com.android.databinding.expr.ComparisonExpr;
-import com.android.databinding.expr.Dependency;
-import com.android.databinding.expr.Expr;
-import com.android.databinding.expr.ExprModel;
-import com.android.databinding.expr.FieldAccessExpr;
-import com.android.databinding.expr.IdentifierExpr;
-import com.android.databinding.expr.MethodCallExpr;
-import com.android.databinding.expr.SymbolExpr;
-import com.android.databinding.expr.TernaryExpr;
-import com.android.databinding.reflection.Callable;
-import com.android.databinding.reflection.ModelAnalyzer;
-import com.android.databinding.reflection.java.JavaAnalyzer;
-import com.android.databinding.reflection.java.JavaClass;
+package android.databinding.tool;
 
 import org.junit.Before;
 import org.junit.Test;
 import org.junit.runner.RunWith;
 import org.junit.runners.Parameterized;
 
+import android.databinding.tool.expr.ComparisonExpr;
+import android.databinding.tool.expr.Dependency;
+import android.databinding.tool.expr.Expr;
+import android.databinding.tool.expr.ExprModel;
+import android.databinding.tool.expr.FieldAccessExpr;
+import android.databinding.tool.expr.IdentifierExpr;
+import android.databinding.tool.expr.MethodCallExpr;
+import android.databinding.tool.expr.SymbolExpr;
+import android.databinding.tool.expr.TernaryExpr;
+import android.databinding.tool.reflection.Callable;
+import android.databinding.tool.reflection.java.JavaAnalyzer;
+import android.databinding.tool.reflection.java.JavaClass;
+
 import java.util.Arrays;
 import java.util.List;
 
-import static org.junit.Assert.*;
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertSame;
+import static org.junit.Assert.assertTrue;
 
 public class ExpressionVisitorTest {
     ExpressionParser mParser = new ExpressionParser(new ExprModel());
diff --git a/compiler/src/test/java/com/android/databinding/LayoutBinderTest.java b/compiler/src/test/java/android/databinding/tool/LayoutBinderTest.java
similarity index 81%
rename from compiler/src/test/java/com/android/databinding/LayoutBinderTest.java
rename to compiler/src/test/java/android/databinding/tool/LayoutBinderTest.java
index 8dfda2f..4219647 100644
--- a/compiler/src/test/java/com/android/databinding/LayoutBinderTest.java
+++ b/compiler/src/test/java/android/databinding/tool/LayoutBinderTest.java
@@ -11,25 +11,27 @@
  * limitations under the License.
  */
 
-package com.android.databinding;
+package android.databinding.tool;
 
 
-import com.android.databinding.expr.Expr;
-import com.android.databinding.expr.ExprModel;
-import com.android.databinding.expr.FieldAccessExpr;
-import com.android.databinding.expr.IdentifierExpr;
-import com.android.databinding.expr.StaticIdentifierExpr;
-import com.android.databinding.reflection.Callable;
-import com.android.databinding.reflection.ModelAnalyzer;
-import com.android.databinding.reflection.java.JavaClass;
-
 import org.junit.Before;
 import org.junit.Test;
 
+import android.databinding.tool.expr.Expr;
+import android.databinding.tool.expr.ExprModel;
+import android.databinding.tool.expr.FieldAccessExpr;
+import android.databinding.tool.expr.IdentifierExpr;
+import android.databinding.tool.expr.StaticIdentifierExpr;
+import android.databinding.tool.reflection.Callable;
+import android.databinding.tool.reflection.java.JavaClass;
+
 import java.util.List;
 import java.util.Map;
 
-import static org.junit.Assert.*;
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertSame;
+import static org.junit.Assert.assertTrue;
 
 public class LayoutBinderTest {
     LayoutBinder mLayoutBinder;
@@ -68,7 +70,7 @@
 
     @Test
     public void testParse() {
-        mLayoutBinder.addVariable("user", "com.android.databinding2.LayoutBinderTest.TestUser");
+        mLayoutBinder.addVariable("user", "android.databinding.tool2.LayoutBinderTest.TestUser");
         mLayoutBinder.parse("user.name");
         mLayoutBinder.parse("user.lastName");
         assertEquals(3, mExprModel.size());
@@ -84,7 +86,7 @@
 
     @Test
     public void testParseWithMethods() {
-        mLayoutBinder.addVariable("user", "com.android.databinding.LayoutBinderTest.TestUser");
+        mLayoutBinder.addVariable("user", "android.databinding.tool.LayoutBinderTest.TestUser");
         mLayoutBinder.parse("user.fullName");
         Expr item = mExprModel.getBindingExpressions().get(0);
         assertTrue(item instanceof FieldAccessExpr);
diff --git a/compiler/src/test/java/com/android/databinding/MockLayoutBinder.java b/compiler/src/test/java/android/databinding/tool/MockLayoutBinder.java
similarity index 90%
rename from compiler/src/test/java/com/android/databinding/MockLayoutBinder.java
rename to compiler/src/test/java/android/databinding/tool/MockLayoutBinder.java
index dc57437..068de85 100644
--- a/compiler/src/test/java/com/android/databinding/MockLayoutBinder.java
+++ b/compiler/src/test/java/android/databinding/tool/MockLayoutBinder.java
@@ -11,9 +11,9 @@
  * limitations under the License.
  */
 
-package com.android.databinding;
+package android.databinding.tool;
 
-import com.android.databinding.store.ResourceBundle;
+import android.databinding.tool.store.ResourceBundle;
 
 public class MockLayoutBinder extends LayoutBinder {
 
diff --git a/compiler/src/test/java/com/android/databinding/SdkVersionTest.java b/compiler/src/test/java/android/databinding/tool/SdkVersionTest.java
similarity index 73%
rename from compiler/src/test/java/com/android/databinding/SdkVersionTest.java
rename to compiler/src/test/java/android/databinding/tool/SdkVersionTest.java
index 2c85f69..70db3a7 100644
--- a/compiler/src/test/java/com/android/databinding/SdkVersionTest.java
+++ b/compiler/src/test/java/android/databinding/tool/SdkVersionTest.java
@@ -11,20 +11,19 @@
  * limitations under the License.
  */
 
-package com.android.databinding;
-
-import com.android.databinding.expr.ExprModel;
-import com.android.databinding.reflection.ModelAnalyzer;
-import com.android.databinding.reflection.ModelClass;
-import com.android.databinding.reflection.ModelMethod;
-import com.android.databinding.reflection.SdkUtil;
-import com.android.databinding.reflection.java.JavaAnalyzer;
-
-import static org.junit.Assert.*;
+package android.databinding.tool;
 
 import org.junit.Before;
 import org.junit.Test;
 
+import android.databinding.tool.reflection.ModelAnalyzer;
+import android.databinding.tool.reflection.ModelClass;
+import android.databinding.tool.reflection.ModelMethod;
+import android.databinding.tool.reflection.SdkUtil;
+import android.databinding.tool.reflection.java.JavaAnalyzer;
+
+import static org.junit.Assert.assertEquals;
+
 public class SdkVersionTest {
 
     @Before
@@ -42,7 +41,7 @@
     @Test
     public void testCustomCode() {
         ModelClass view = ModelAnalyzer.getInstance()
-                .findClass("com.android.databinding.SdkVersionTest", null);
+                .findClass("android.databinding.tool.SdkVersionTest", null);
         ModelMethod setElevation = view.getMethods("testCustomCode", 0)[0];
         assertEquals(1, SdkUtil.getMinApi(setElevation));
     }
diff --git a/compiler/src/test/java/com/android/databinding/expr/ExprModelTest.java b/compiler/src/test/java/android/databinding/tool/expr/ExprModelTest.java
similarity index 96%
rename from compiler/src/test/java/com/android/databinding/expr/ExprModelTest.java
rename to compiler/src/test/java/android/databinding/tool/expr/ExprModelTest.java
index 9dded3a..ed9934d 100644
--- a/compiler/src/test/java/com/android/databinding/expr/ExprModelTest.java
+++ b/compiler/src/test/java/android/databinding/tool/expr/ExprModelTest.java
@@ -14,19 +14,11 @@
  * limitations under the License.
  */
 
-package com.android.databinding.expr;
+package android.databinding.tool.expr;
 
 import com.google.common.base.Predicate;
 import com.google.common.collect.Iterables;
 
-import com.android.databinding.MockLayoutBinder;
-import com.android.databinding.reflection.ModelAnalyzer;
-import com.android.databinding.LayoutBinder;
-import com.android.databinding.reflection.ModelClass;
-import com.android.databinding.reflection.java.JavaAnalyzer;
-import com.android.databinding.store.ResourceBundle;
-import com.android.databinding.util.L;
-
 import org.apache.commons.lang3.ArrayUtils;
 import org.apache.commons.lang3.NotImplementedException;
 import org.junit.Before;
@@ -35,11 +27,22 @@
 import org.junit.rules.TestWatcher;
 import org.junit.runner.Description;
 
-import java.io.File;
+import android.databinding.tool.LayoutBinder;
+import android.databinding.tool.MockLayoutBinder;
+import android.databinding.tool.reflection.ModelAnalyzer;
+import android.databinding.tool.reflection.ModelClass;
+import android.databinding.tool.reflection.java.JavaAnalyzer;
+import android.databinding.tool.util.L;
+
 import java.util.BitSet;
 import java.util.List;
 
-import static org.junit.Assert.*;
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertNull;
+import static org.junit.Assert.assertSame;
+import static org.junit.Assert.assertTrue;
 
 public class ExprModelTest {
     private static class DummyExpr extends Expr {
diff --git a/compiler/src/test/java/com/android/databinding/expr/ExprTest.java b/compiler/src/test/java/android/databinding/tool/expr/ExprTest.java
similarity index 94%
rename from compiler/src/test/java/com/android/databinding/expr/ExprTest.java
rename to compiler/src/test/java/android/databinding/tool/expr/ExprTest.java
index a3618e3..f051fde 100644
--- a/compiler/src/test/java/com/android/databinding/expr/ExprTest.java
+++ b/compiler/src/test/java/android/databinding/tool/expr/ExprTest.java
@@ -14,20 +14,19 @@
  * limitations under the License.
  */
 
-package com.android.databinding.expr;
-
-import com.android.databinding.reflection.ModelAnalyzer;
-import com.android.databinding.reflection.ModelClass;
-import com.android.databinding.reflection.java.JavaAnalyzer;
+package android.databinding.tool.expr;
 
 import org.junit.Before;
 import org.junit.Test;
 
+import android.databinding.tool.reflection.ModelAnalyzer;
+import android.databinding.tool.reflection.ModelClass;
+import android.databinding.tool.reflection.java.JavaAnalyzer;
+
 import java.util.BitSet;
 import java.util.List;
 
 import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertFalse;
 import static org.junit.Assert.assertTrue;
 
 public class ExprTest{
diff --git a/compiler/src/test/java/com/android/databinding/reflection/java/JavaAnalyzer.java b/compiler/src/test/java/android/databinding/tool/reflection/java/JavaAnalyzer.java
similarity index 94%
rename from compiler/src/test/java/com/android/databinding/reflection/java/JavaAnalyzer.java
rename to compiler/src/test/java/android/databinding/tool/reflection/java/JavaAnalyzer.java
index c058d55..19b14b4 100644
--- a/compiler/src/test/java/com/android/databinding/reflection/java/JavaAnalyzer.java
+++ b/compiler/src/test/java/android/databinding/tool/reflection/java/JavaAnalyzer.java
@@ -11,15 +11,15 @@
  * limitations under the License.
  */
 
-package com.android.databinding.reflection.java;
+package android.databinding.tool.reflection.java;
 
 import com.google.common.collect.ImmutableMap;
 
-import com.android.databinding.reflection.ModelAnalyzer;
-import com.android.databinding.reflection.ModelClass;
-import com.android.databinding.reflection.SdkUtil;
-import com.android.databinding.reflection.TypeUtil;
-import com.android.databinding.util.L;
+import android.databinding.tool.reflection.ModelAnalyzer;
+import android.databinding.tool.reflection.ModelClass;
+import android.databinding.tool.reflection.SdkUtil;
+import android.databinding.tool.reflection.TypeUtil;
+import android.databinding.tool.util.L;
 
 import java.io.File;
 import java.net.MalformedURLException;
diff --git a/compiler/src/test/java/com/android/databinding/reflection/java/JavaClass.java b/compiler/src/test/java/android/databinding/tool/reflection/java/JavaClass.java
similarity index 94%
rename from compiler/src/test/java/com/android/databinding/reflection/java/JavaClass.java
rename to compiler/src/test/java/android/databinding/tool/reflection/java/JavaClass.java
index 04ea37f..121a569 100644
--- a/compiler/src/test/java/com/android/databinding/reflection/java/JavaClass.java
+++ b/compiler/src/test/java/android/databinding/tool/reflection/java/JavaClass.java
@@ -11,19 +11,15 @@
  * limitations under the License.
  */
 
-package com.android.databinding.reflection.java;
+package android.databinding.tool.reflection.java;
 
-import com.android.databinding.reflection.ModelClass;
-import com.android.databinding.reflection.ModelField;
-import com.android.databinding.reflection.ModelMethod;
-import com.android.databinding.reflection.SdkUtil;
-import com.android.databinding.reflection.TypeUtil;
+import android.databinding.tool.reflection.ModelClass;
+import android.databinding.tool.reflection.ModelField;
+import android.databinding.tool.reflection.ModelMethod;
+import android.databinding.tool.reflection.TypeUtil;
 
 import java.lang.reflect.Field;
 import java.lang.reflect.Method;
-import java.util.ArrayList;
-import java.util.List;
-import java.util.Map;
 
 public class JavaClass extends ModelClass {
     public final Class mClass;
diff --git a/compiler/src/test/java/com/android/databinding/reflection/java/JavaField.java b/compiler/src/test/java/android/databinding/tool/reflection/java/JavaField.java
similarity index 87%
rename from compiler/src/test/java/com/android/databinding/reflection/java/JavaField.java
rename to compiler/src/test/java/android/databinding/tool/reflection/java/JavaField.java
index db3874b..6821f16 100644
--- a/compiler/src/test/java/com/android/databinding/reflection/java/JavaField.java
+++ b/compiler/src/test/java/android/databinding/tool/reflection/java/JavaField.java
@@ -11,12 +11,11 @@
  * limitations under the License.
  */
 
-package com.android.databinding.reflection.java;
+package android.databinding.tool.reflection.java;
 
-import com.android.databinding.reflection.ModelClass;
-import com.android.databinding.reflection.ModelField;
-
-import android.binding.Bindable;
+import android.databinding.Bindable;
+import android.databinding.tool.reflection.ModelClass;
+import android.databinding.tool.reflection.ModelField;
 
 import java.lang.reflect.Field;
 import java.lang.reflect.Modifier;
diff --git a/compiler/src/test/java/com/android/databinding/reflection/java/JavaMethod.java b/compiler/src/test/java/android/databinding/tool/reflection/java/JavaMethod.java
similarity index 88%
rename from compiler/src/test/java/com/android/databinding/reflection/java/JavaMethod.java
rename to compiler/src/test/java/android/databinding/tool/reflection/java/JavaMethod.java
index 7075782..4ef566f 100644
--- a/compiler/src/test/java/com/android/databinding/reflection/java/JavaMethod.java
+++ b/compiler/src/test/java/android/databinding/tool/reflection/java/JavaMethod.java
@@ -11,15 +11,14 @@
  * limitations under the License.
  */
 
-package com.android.databinding.reflection.java;
+package android.databinding.tool.reflection.java;
 
 
-import com.android.databinding.reflection.ModelClass;
-import com.android.databinding.reflection.ModelMethod;
-import com.android.databinding.reflection.SdkUtil;
-import com.android.databinding.reflection.TypeUtil;
-
-import android.binding.Bindable;
+import android.databinding.Bindable;
+import android.databinding.tool.reflection.ModelClass;
+import android.databinding.tool.reflection.ModelMethod;
+import android.databinding.tool.reflection.SdkUtil;
+import android.databinding.tool.reflection.TypeUtil;
 
 import java.lang.reflect.Method;
 import java.lang.reflect.Modifier;
diff --git a/compiler/src/test/java/com/android/databinding/reflection/java/JavaTypeUtil.java b/compiler/src/test/java/android/databinding/tool/reflection/java/JavaTypeUtil.java
similarity index 91%
rename from compiler/src/test/java/com/android/databinding/reflection/java/JavaTypeUtil.java
rename to compiler/src/test/java/android/databinding/tool/reflection/java/JavaTypeUtil.java
index 50205ef..33bff3b 100644
--- a/compiler/src/test/java/com/android/databinding/reflection/java/JavaTypeUtil.java
+++ b/compiler/src/test/java/android/databinding/tool/reflection/java/JavaTypeUtil.java
@@ -11,12 +11,12 @@
  * limitations under the License.
  */
 
-package com.android.databinding.reflection.java;
+package android.databinding.tool.reflection.java;
 
-import com.android.databinding.reflection.ModelClass;
-import com.android.databinding.reflection.ModelMethod;
-import com.android.databinding.reflection.TypeUtil;
-import com.android.databinding.util.L;
+import android.databinding.tool.reflection.ModelClass;
+import android.databinding.tool.reflection.ModelMethod;
+import android.databinding.tool.reflection.TypeUtil;
+import android.databinding.tool.util.L;
 
 import java.lang.reflect.Array;
 import java.lang.reflect.Method;
diff --git a/compiler/src/test/java/com/android/databinding/writer/FlagSetTest.java b/compiler/src/test/java/android/databinding/tool/writer/FlagSetTest.java
similarity index 95%
rename from compiler/src/test/java/com/android/databinding/writer/FlagSetTest.java
rename to compiler/src/test/java/android/databinding/tool/writer/FlagSetTest.java
index 1d72af5..327593a 100644
--- a/compiler/src/test/java/com/android/databinding/writer/FlagSetTest.java
+++ b/compiler/src/test/java/android/databinding/tool/writer/FlagSetTest.java
@@ -14,12 +14,13 @@
  * limitations under the License.
  */
 
-package com.android.databinding.writer;
+package android.databinding.tool.writer;
 
 import org.junit.Test;
 
 import java.util.BitSet;
-import static org.junit.Assert.*;
+
+import static org.junit.Assert.assertEquals;
 
 public class FlagSetTest {
     @Test
diff --git a/extensions/baseAdapters/build.gradle b/extensions/baseAdapters/build.gradle
index 74e9036..75646a6 100644
--- a/extensions/baseAdapters/build.gradle
+++ b/extensions/baseAdapters/build.gradle
@@ -69,7 +69,7 @@
     task.from variant.javaCompile.destinationDir
     def packageName = "com.android.databinding.library.baseAdapters"
     def appPkgAsClass = packageName.replace('.', '/')
-    task.exclude("com/android/databinding/layouts/*.*")
+    task.exclude("android/databinding/layouts/*.*")
     task.exclude("$appPkgAsClass/generated/*")
     task.exclude("$appPkgAsClass/BR.*")
     artifacts.add('jarArchives', task);
diff --git a/extensions/baseAdapters/src/main/java/android/bindings/adapters/AbsListViewBindingAdapter.java b/extensions/baseAdapters/src/main/java/android/databinding/adapters/AbsListViewBindingAdapter.java
similarity index 89%
rename from extensions/baseAdapters/src/main/java/android/bindings/adapters/AbsListViewBindingAdapter.java
rename to extensions/baseAdapters/src/main/java/android/databinding/adapters/AbsListViewBindingAdapter.java
index c8b481d..e645bff 100644
--- a/extensions/baseAdapters/src/main/java/android/bindings/adapters/AbsListViewBindingAdapter.java
+++ b/extensions/baseAdapters/src/main/java/android/databinding/adapters/AbsListViewBindingAdapter.java
@@ -13,10 +13,10 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package android.binding.adapters;
+package android.databinding.adapters;
 
-import android.binding.BindingMethod;
-import android.binding.BindingMethods;
+import android.databinding.BindingMethod;
+import android.databinding.BindingMethods;
 
 @BindingMethods({
         @BindingMethod(type = "android.widget.AbsListView", attribute = "android:listSelector", method = "setSelector"),
diff --git a/extensions/baseAdapters/src/main/java/android/bindings/adapters/AbsSeekBarBindingAdapter.java b/extensions/baseAdapters/src/main/java/android/databinding/adapters/AbsSeekBarBindingAdapter.java
similarity index 86%
rename from extensions/baseAdapters/src/main/java/android/bindings/adapters/AbsSeekBarBindingAdapter.java
rename to extensions/baseAdapters/src/main/java/android/databinding/adapters/AbsSeekBarBindingAdapter.java
index f02be48..4494ec7 100644
--- a/extensions/baseAdapters/src/main/java/android/bindings/adapters/AbsSeekBarBindingAdapter.java
+++ b/extensions/baseAdapters/src/main/java/android/databinding/adapters/AbsSeekBarBindingAdapter.java
@@ -13,10 +13,10 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package android.binding.adapters;
+package android.databinding.adapters;
 
-import android.binding.BindingMethod;
-import android.binding.BindingMethods;
+import android.databinding.BindingMethod;
+import android.databinding.BindingMethods;
 
 @BindingMethods({
         @BindingMethod(type = "android.widget.AbsSeekBar", attribute = "android:thumbTint", method = "setThumbTintList"),
diff --git a/extensions/baseAdapters/src/main/java/android/bindings/adapters/AbsSpinnerBindingAdapter.java b/extensions/baseAdapters/src/main/java/android/databinding/adapters/AbsSpinnerBindingAdapter.java
similarity index 95%
rename from extensions/baseAdapters/src/main/java/android/bindings/adapters/AbsSpinnerBindingAdapter.java
rename to extensions/baseAdapters/src/main/java/android/databinding/adapters/AbsSpinnerBindingAdapter.java
index b02ff07..adf84b2 100644
--- a/extensions/baseAdapters/src/main/java/android/bindings/adapters/AbsSpinnerBindingAdapter.java
+++ b/extensions/baseAdapters/src/main/java/android/databinding/adapters/AbsSpinnerBindingAdapter.java
@@ -13,9 +13,9 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package android.binding.adapters;
+package android.databinding.adapters;
 
-import android.binding.BindingAdapter;
+import android.databinding.BindingAdapter;
 import android.widget.AbsSpinner;
 import android.widget.ArrayAdapter;
 import android.widget.SpinnerAdapter;
diff --git a/extensions/baseAdapters/src/main/java/android/bindings/adapters/AutoCompleteTextViewBindingAdapter.java b/extensions/baseAdapters/src/main/java/android/databinding/adapters/AutoCompleteTextViewBindingAdapter.java
similarity index 88%
rename from extensions/baseAdapters/src/main/java/android/bindings/adapters/AutoCompleteTextViewBindingAdapter.java
rename to extensions/baseAdapters/src/main/java/android/databinding/adapters/AutoCompleteTextViewBindingAdapter.java
index 79c06a8..334d818 100644
--- a/extensions/baseAdapters/src/main/java/android/bindings/adapters/AutoCompleteTextViewBindingAdapter.java
+++ b/extensions/baseAdapters/src/main/java/android/databinding/adapters/AutoCompleteTextViewBindingAdapter.java
@@ -13,10 +13,10 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package android.binding.adapters;
+package android.databinding.adapters;
 
-import android.binding.BindingMethod;
-import android.binding.BindingMethods;
+import android.databinding.BindingMethod;
+import android.databinding.BindingMethods;
 
 @BindingMethods({
         @BindingMethod(type = "android.widget.AutoCompleteTextView", attribute = "android:completionThreshold", method = "setThreshold"),
diff --git a/extensions/baseAdapters/src/main/java/android/bindings/adapters/CardViewBindingAdapter.java b/extensions/baseAdapters/src/main/java/android/databinding/adapters/CardViewBindingAdapter.java
similarity index 94%
rename from extensions/baseAdapters/src/main/java/android/bindings/adapters/CardViewBindingAdapter.java
rename to extensions/baseAdapters/src/main/java/android/databinding/adapters/CardViewBindingAdapter.java
index ba5246d..0545141 100644
--- a/extensions/baseAdapters/src/main/java/android/bindings/adapters/CardViewBindingAdapter.java
+++ b/extensions/baseAdapters/src/main/java/android/databinding/adapters/CardViewBindingAdapter.java
@@ -13,11 +13,11 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package android.binding.adapters;
+package android.databinding.adapters;
 
-import android.binding.BindingAdapter;
-import android.binding.BindingMethod;
-import android.binding.BindingMethods;
+import android.databinding.BindingAdapter;
+import android.databinding.BindingMethod;
+import android.databinding.BindingMethods;
 import android.support.v7.widget.CardView;
 
 @BindingMethods({
diff --git a/extensions/baseAdapters/src/main/java/android/bindings/adapters/CheckedTextViewBindingAdapter.java b/extensions/baseAdapters/src/main/java/android/databinding/adapters/CheckedTextViewBindingAdapter.java
similarity index 88%
rename from extensions/baseAdapters/src/main/java/android/bindings/adapters/CheckedTextViewBindingAdapter.java
rename to extensions/baseAdapters/src/main/java/android/databinding/adapters/CheckedTextViewBindingAdapter.java
index 3b16d08..aa16057 100644
--- a/extensions/baseAdapters/src/main/java/android/bindings/adapters/CheckedTextViewBindingAdapter.java
+++ b/extensions/baseAdapters/src/main/java/android/databinding/adapters/CheckedTextViewBindingAdapter.java
@@ -13,10 +13,10 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package android.binding.adapters;
+package android.databinding.adapters;
 
-import android.binding.BindingMethod;
-import android.binding.BindingMethods;
+import android.databinding.BindingMethod;
+import android.databinding.BindingMethods;
 
 @BindingMethods({
         @BindingMethod(type = "android.widget.CheckedTextView", attribute = "android:checkMark", method = "setCheckMarkDrawable"),
diff --git a/extensions/baseAdapters/src/main/java/android/bindings/adapters/CompoundButtonBindingAdapter.java b/extensions/baseAdapters/src/main/java/android/databinding/adapters/CompoundButtonBindingAdapter.java
similarity index 86%
rename from extensions/baseAdapters/src/main/java/android/bindings/adapters/CompoundButtonBindingAdapter.java
rename to extensions/baseAdapters/src/main/java/android/databinding/adapters/CompoundButtonBindingAdapter.java
index 7115bc5..9ed5dd7 100644
--- a/extensions/baseAdapters/src/main/java/android/bindings/adapters/CompoundButtonBindingAdapter.java
+++ b/extensions/baseAdapters/src/main/java/android/databinding/adapters/CompoundButtonBindingAdapter.java
@@ -13,10 +13,10 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package android.binding.adapters;
+package android.databinding.adapters;
 
-import android.binding.BindingMethod;
-import android.binding.BindingMethods;
+import android.databinding.BindingMethod;
+import android.databinding.BindingMethods;
 
 @BindingMethods({
         @BindingMethod(type = "android.widget.CompoundButton", attribute = "android:buttonTint", method = "setButtonTintList"),
diff --git a/extensions/baseAdapters/src/main/java/android/bindings/adapters/Converters.java b/extensions/baseAdapters/src/main/java/android/databinding/adapters/Converters.java
similarity index 92%
rename from extensions/baseAdapters/src/main/java/android/bindings/adapters/Converters.java
rename to extensions/baseAdapters/src/main/java/android/databinding/adapters/Converters.java
index 5982dc1..44eda4d 100644
--- a/extensions/baseAdapters/src/main/java/android/bindings/adapters/Converters.java
+++ b/extensions/baseAdapters/src/main/java/android/databinding/adapters/Converters.java
@@ -13,9 +13,9 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package android.binding.adapters;
+package android.databinding.adapters;
 
-import android.binding.BindingConversion;
+import android.databinding.BindingConversion;
 import android.content.res.ColorStateList;
 import android.graphics.drawable.ColorDrawable;
 
diff --git a/extensions/baseAdapters/src/main/java/android/bindings/adapters/FrameLayoutBindingAdapter.java b/extensions/baseAdapters/src/main/java/android/databinding/adapters/FrameLayoutBindingAdapter.java
similarity index 86%
rename from extensions/baseAdapters/src/main/java/android/bindings/adapters/FrameLayoutBindingAdapter.java
rename to extensions/baseAdapters/src/main/java/android/databinding/adapters/FrameLayoutBindingAdapter.java
index 49aa6a5..82641a6 100644
--- a/extensions/baseAdapters/src/main/java/android/bindings/adapters/FrameLayoutBindingAdapter.java
+++ b/extensions/baseAdapters/src/main/java/android/databinding/adapters/FrameLayoutBindingAdapter.java
@@ -13,10 +13,10 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package android.binding.adapters;
+package android.databinding.adapters;
 
-import android.binding.BindingMethod;
-import android.binding.BindingMethods;
+import android.databinding.BindingMethod;
+import android.databinding.BindingMethods;
 
 @BindingMethods({
         @BindingMethod(type = "android.widget.FrameLayout", attribute = "android:foregroundTint", method = "setForegroundTintList"),
diff --git a/extensions/baseAdapters/src/main/java/android/bindings/adapters/ImageViewBindingAdapter.java b/extensions/baseAdapters/src/main/java/android/databinding/adapters/ImageViewBindingAdapter.java
similarity index 89%
rename from extensions/baseAdapters/src/main/java/android/bindings/adapters/ImageViewBindingAdapter.java
rename to extensions/baseAdapters/src/main/java/android/databinding/adapters/ImageViewBindingAdapter.java
index e2d0929..9be1a14 100644
--- a/extensions/baseAdapters/src/main/java/android/bindings/adapters/ImageViewBindingAdapter.java
+++ b/extensions/baseAdapters/src/main/java/android/databinding/adapters/ImageViewBindingAdapter.java
@@ -13,10 +13,10 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package android.binding.adapters;
+package android.databinding.adapters;
 
-import android.binding.BindingMethod;
-import android.binding.BindingMethods;
+import android.databinding.BindingMethod;
+import android.databinding.BindingMethods;
 
 @BindingMethods({
         @BindingMethod(type = "android.widget.ImageView", attribute = "android:src", method = "setImageDrawable"),
diff --git a/extensions/baseAdapters/src/main/java/android/bindings/adapters/LinearLayoutBindingAdapter.java b/extensions/baseAdapters/src/main/java/android/databinding/adapters/LinearLayoutBindingAdapter.java
similarity index 88%
rename from extensions/baseAdapters/src/main/java/android/bindings/adapters/LinearLayoutBindingAdapter.java
rename to extensions/baseAdapters/src/main/java/android/databinding/adapters/LinearLayoutBindingAdapter.java
index b0a4cc4..7bb85e9 100644
--- a/extensions/baseAdapters/src/main/java/android/bindings/adapters/LinearLayoutBindingAdapter.java
+++ b/extensions/baseAdapters/src/main/java/android/databinding/adapters/LinearLayoutBindingAdapter.java
@@ -13,10 +13,10 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package android.binding.adapters;
+package android.databinding.adapters;
 
-import android.binding.BindingMethod;
-import android.binding.BindingMethods;
+import android.databinding.BindingMethod;
+import android.databinding.BindingMethods;
 
 @BindingMethods({
         @BindingMethod(type = "android.widget.LinearLayout", attribute = "android:divider", method = "setDividerDrawable"),
diff --git a/extensions/baseAdapters/src/main/java/android/bindings/adapters/ProgressBarBindingAdapter.java b/extensions/baseAdapters/src/main/java/android/databinding/adapters/ProgressBarBindingAdapter.java
similarity index 89%
rename from extensions/baseAdapters/src/main/java/android/bindings/adapters/ProgressBarBindingAdapter.java
rename to extensions/baseAdapters/src/main/java/android/databinding/adapters/ProgressBarBindingAdapter.java
index b0d6249..fdbab8f 100644
--- a/extensions/baseAdapters/src/main/java/android/bindings/adapters/ProgressBarBindingAdapter.java
+++ b/extensions/baseAdapters/src/main/java/android/databinding/adapters/ProgressBarBindingAdapter.java
@@ -13,10 +13,10 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package android.binding.adapters;
+package android.databinding.adapters;
 
-import android.binding.BindingMethod;
-import android.binding.BindingMethods;
+import android.databinding.BindingMethod;
+import android.databinding.BindingMethods;
 
 @BindingMethods({
         @BindingMethod(type = "android.widget.ProgressBar", attribute = "android:indeterminateTint", method = "setIndeterminateTintList"),
diff --git a/extensions/baseAdapters/src/main/java/android/bindings/adapters/RadioGroupBindingAdapter.java b/extensions/baseAdapters/src/main/java/android/databinding/adapters/RadioGroupBindingAdapter.java
similarity index 86%
rename from extensions/baseAdapters/src/main/java/android/bindings/adapters/RadioGroupBindingAdapter.java
rename to extensions/baseAdapters/src/main/java/android/databinding/adapters/RadioGroupBindingAdapter.java
index 8d21b7a..727fecf 100644
--- a/extensions/baseAdapters/src/main/java/android/bindings/adapters/RadioGroupBindingAdapter.java
+++ b/extensions/baseAdapters/src/main/java/android/databinding/adapters/RadioGroupBindingAdapter.java
@@ -13,10 +13,10 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package android.binding.adapters;
+package android.databinding.adapters;
 
-import android.binding.BindingMethod;
-import android.binding.BindingMethods;
+import android.databinding.BindingMethod;
+import android.databinding.BindingMethods;
 
 @BindingMethods({
         @BindingMethod(type = "android.widget.RadioGroup", attribute = "android:checkedButton", method = "check"),
diff --git a/extensions/baseAdapters/src/main/java/android/bindings/adapters/SpinnerBindingAdapter.java b/extensions/baseAdapters/src/main/java/android/databinding/adapters/SpinnerBindingAdapter.java
similarity index 86%
rename from extensions/baseAdapters/src/main/java/android/bindings/adapters/SpinnerBindingAdapter.java
rename to extensions/baseAdapters/src/main/java/android/databinding/adapters/SpinnerBindingAdapter.java
index 34a62c7..eb98629 100644
--- a/extensions/baseAdapters/src/main/java/android/bindings/adapters/SpinnerBindingAdapter.java
+++ b/extensions/baseAdapters/src/main/java/android/databinding/adapters/SpinnerBindingAdapter.java
@@ -13,10 +13,10 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package android.binding.adapters;
+package android.databinding.adapters;
 
-import android.binding.BindingMethod;
-import android.binding.BindingMethods;
+import android.databinding.BindingMethod;
+import android.databinding.BindingMethods;
 
 @BindingMethods({
         @BindingMethod(type = "android.widget.Spinner", attribute = "android:popupBackground", method = "setPopupBackgroundDrawable"),
diff --git a/extensions/baseAdapters/src/main/java/android/bindings/adapters/SwitchBindingAdapter.java b/extensions/baseAdapters/src/main/java/android/databinding/adapters/SwitchBindingAdapter.java
similarity index 87%
rename from extensions/baseAdapters/src/main/java/android/bindings/adapters/SwitchBindingAdapter.java
rename to extensions/baseAdapters/src/main/java/android/databinding/adapters/SwitchBindingAdapter.java
index 3645118..05307c7 100644
--- a/extensions/baseAdapters/src/main/java/android/bindings/adapters/SwitchBindingAdapter.java
+++ b/extensions/baseAdapters/src/main/java/android/databinding/adapters/SwitchBindingAdapter.java
@@ -13,12 +13,12 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package android.binding.adapters;
+package android.databinding.adapters;
 
 import android.annotation.TargetApi;
-import android.binding.BindingAdapter;
-import android.binding.BindingMethod;
-import android.binding.BindingMethods;
+import android.databinding.BindingAdapter;
+import android.databinding.BindingMethod;
+import android.databinding.BindingMethods;
 import android.os.Build;
 import android.widget.Switch;
 
diff --git a/extensions/baseAdapters/src/main/java/android/bindings/adapters/SwitchCompatBindingAdapter.java b/extensions/baseAdapters/src/main/java/android/databinding/adapters/SwitchCompatBindingAdapter.java
similarity index 87%
rename from extensions/baseAdapters/src/main/java/android/bindings/adapters/SwitchCompatBindingAdapter.java
rename to extensions/baseAdapters/src/main/java/android/databinding/adapters/SwitchCompatBindingAdapter.java
index 4c3c996..8dca9ac 100644
--- a/extensions/baseAdapters/src/main/java/android/bindings/adapters/SwitchCompatBindingAdapter.java
+++ b/extensions/baseAdapters/src/main/java/android/databinding/adapters/SwitchCompatBindingAdapter.java
@@ -13,11 +13,11 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package android.binding.adapters;
+package android.databinding.adapters;
 
-import android.binding.BindingAdapter;
-import android.binding.BindingMethod;
-import android.binding.BindingMethods;
+import android.databinding.BindingAdapter;
+import android.databinding.BindingMethod;
+import android.databinding.BindingMethods;
 import android.support.v7.widget.SwitchCompat;
 
 @BindingMethods({
diff --git a/extensions/baseAdapters/src/main/java/android/bindings/adapters/TabWidgetBindingAdapter.java b/extensions/baseAdapters/src/main/java/android/databinding/adapters/TabWidgetBindingAdapter.java
similarity index 90%
rename from extensions/baseAdapters/src/main/java/android/bindings/adapters/TabWidgetBindingAdapter.java
rename to extensions/baseAdapters/src/main/java/android/databinding/adapters/TabWidgetBindingAdapter.java
index 8c58e91..c5fec7f 100644
--- a/extensions/baseAdapters/src/main/java/android/bindings/adapters/TabWidgetBindingAdapter.java
+++ b/extensions/baseAdapters/src/main/java/android/databinding/adapters/TabWidgetBindingAdapter.java
@@ -13,10 +13,10 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package android.binding.adapters;
+package android.databinding.adapters;
 
-import android.binding.BindingMethod;
-import android.binding.BindingMethods;
+import android.databinding.BindingMethod;
+import android.databinding.BindingMethods;
 
 @BindingMethods({
         @BindingMethod(type = "android.widget.TabWidget", attribute = "android:divider", method = "setDividerDrawable"),
diff --git a/extensions/baseAdapters/src/main/java/android/bindings/adapters/TableLayoutBindingAdapter.java b/extensions/baseAdapters/src/main/java/android/databinding/adapters/TableLayoutBindingAdapter.java
similarity index 97%
rename from extensions/baseAdapters/src/main/java/android/bindings/adapters/TableLayoutBindingAdapter.java
rename to extensions/baseAdapters/src/main/java/android/databinding/adapters/TableLayoutBindingAdapter.java
index 1973799..e0c7591 100644
--- a/extensions/baseAdapters/src/main/java/android/bindings/adapters/TableLayoutBindingAdapter.java
+++ b/extensions/baseAdapters/src/main/java/android/databinding/adapters/TableLayoutBindingAdapter.java
@@ -13,9 +13,9 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package android.binding.adapters;
+package android.databinding.adapters;
 
-import android.binding.BindingAdapter;
+import android.databinding.BindingAdapter;
 import android.util.SparseBooleanArray;
 import android.widget.TableLayout;
 
diff --git a/extensions/baseAdapters/src/main/java/android/bindings/adapters/TextViewBindingAdapter.java b/extensions/baseAdapters/src/main/java/android/databinding/adapters/TextViewBindingAdapter.java
similarity index 98%
rename from extensions/baseAdapters/src/main/java/android/bindings/adapters/TextViewBindingAdapter.java
rename to extensions/baseAdapters/src/main/java/android/databinding/adapters/TextViewBindingAdapter.java
index 1cd5ef4..3683916 100644
--- a/extensions/baseAdapters/src/main/java/android/bindings/adapters/TextViewBindingAdapter.java
+++ b/extensions/baseAdapters/src/main/java/android/databinding/adapters/TextViewBindingAdapter.java
@@ -13,11 +13,11 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package android.binding.adapters;
+package android.databinding.adapters;
 
-import android.binding.BindingAdapter;
-import android.binding.BindingMethod;
-import android.binding.BindingMethods;
+import android.databinding.BindingAdapter;
+import android.databinding.BindingMethod;
+import android.databinding.BindingMethods;
 import android.graphics.drawable.Drawable;
 import android.os.Build;
 import android.text.InputFilter;
diff --git a/extensions/baseAdapters/src/main/java/android/bindings/adapters/ViewBindingAdapter.java b/extensions/baseAdapters/src/main/java/android/databinding/adapters/ViewBindingAdapter.java
similarity index 96%
rename from extensions/baseAdapters/src/main/java/android/bindings/adapters/ViewBindingAdapter.java
rename to extensions/baseAdapters/src/main/java/android/databinding/adapters/ViewBindingAdapter.java
index 1e361cf..e8b9e43 100644
--- a/extensions/baseAdapters/src/main/java/android/bindings/adapters/ViewBindingAdapter.java
+++ b/extensions/baseAdapters/src/main/java/android/databinding/adapters/ViewBindingAdapter.java
@@ -13,11 +13,11 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package android.binding.adapters;
+package android.databinding.adapters;
 
-import android.binding.BindingAdapter;
-import android.binding.BindingMethod;
-import android.binding.BindingMethods;
+import android.databinding.BindingAdapter;
+import android.databinding.BindingMethod;
+import android.databinding.BindingMethods;
 import android.os.Build;
 import android.view.View;
 
diff --git a/extensions/baseAdapters/src/main/java/android/bindings/adapters/ViewGroupBindingAdapter.java b/extensions/baseAdapters/src/main/java/android/databinding/adapters/ViewGroupBindingAdapter.java
similarity index 90%
rename from extensions/baseAdapters/src/main/java/android/bindings/adapters/ViewGroupBindingAdapter.java
rename to extensions/baseAdapters/src/main/java/android/databinding/adapters/ViewGroupBindingAdapter.java
index 4448a30..aaad4d1 100644
--- a/extensions/baseAdapters/src/main/java/android/bindings/adapters/ViewGroupBindingAdapter.java
+++ b/extensions/baseAdapters/src/main/java/android/databinding/adapters/ViewGroupBindingAdapter.java
@@ -13,13 +13,13 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package android.binding.adapters;
+package android.databinding.adapters;
 
 import android.animation.LayoutTransition;
 import android.annotation.TargetApi;
-import android.binding.BindingAdapter;
-import android.binding.BindingMethod;
-import android.binding.BindingMethods;
+import android.databinding.BindingAdapter;
+import android.databinding.BindingMethod;
+import android.databinding.BindingMethods;
 import android.os.Build;
 import android.view.ViewGroup;
 
diff --git a/extensions/baseAdapters/src/main/java/android/bindings/adapters/ViewStubBindingAdapter.java b/extensions/baseAdapters/src/main/java/android/databinding/adapters/ViewStubBindingAdapter.java
similarity index 83%
rename from extensions/baseAdapters/src/main/java/android/bindings/adapters/ViewStubBindingAdapter.java
rename to extensions/baseAdapters/src/main/java/android/databinding/adapters/ViewStubBindingAdapter.java
index f24ab03..37864cc 100644
--- a/extensions/baseAdapters/src/main/java/android/bindings/adapters/ViewStubBindingAdapter.java
+++ b/extensions/baseAdapters/src/main/java/android/databinding/adapters/ViewStubBindingAdapter.java
@@ -13,11 +13,11 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package android.binding.adapters;
+package android.databinding.adapters;
 
-import android.binding.BindingMethod;
-import android.binding.BindingMethods;
-import android.binding.Untaggable;
+import android.databinding.BindingMethod;
+import android.databinding.BindingMethods;
+import android.databinding.Untaggable;
 
 @Untaggable({"android.view.ViewStub"})
 @BindingMethods({
diff --git a/gradlePlugin/src/main/kotlin/DataBindingProcessLayoutsTask.kt b/gradlePlugin/src/main/kotlin/DataBindingProcessLayoutsTask.kt
index d89552c..f3e1f1d 100644
--- a/gradlePlugin/src/main/kotlin/DataBindingProcessLayoutsTask.kt
+++ b/gradlePlugin/src/main/kotlin/DataBindingProcessLayoutsTask.kt
@@ -13,13 +13,12 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package com.android.databinding
+package android.databinding.tool
 
 import org.gradle.api.DefaultTask
 import org.gradle.api.tasks.TaskAction
-import com.android.databinding.LayoutXmlProcessor
 import kotlin.properties.Delegates
-import com.android.databinding.util.Log
+import android.databinding.tool.util.Log
 import java.io.File
 
 open class DataBindingProcessLayoutsTask : DefaultTask() {
diff --git a/gradlePlugin/src/main/kotlin/plugin.kt b/gradlePlugin/src/main/kotlin/plugin.kt
index b991ed6..61d2f3e 100644
--- a/gradlePlugin/src/main/kotlin/plugin.kt
+++ b/gradlePlugin/src/main/kotlin/plugin.kt
@@ -14,53 +14,23 @@
  * limitations under the License.
  */
 
-package com.android.databinding
+package android.databinding.tool
 
 import org.gradle.api.Plugin
 import org.gradle.api.Project
-import groovy.lang.Closure
-import org.codehaus.groovy.runtime.MethodClosure
-import org.gradle.api.Task
 import com.android.build.gradle.AppExtension
 import com.android.build.gradle.internal.api.ApplicationVariantImpl
 import com.android.build.gradle.internal.variant.ApplicationVariantData
-import kotlin.properties.Delegates
-import java.net.URLClassLoader
-import groovy.lang.MetaClass
 import java.io.File
-import java.util.ArrayList
-import org.gradle.api.internal.tasks.compile.DefaultJavaCompileSpec
-import org.gradle.api.tasks.WorkResult
 import org.gradle.api.file.FileCollection
-import org.gradle.api.internal.file.DefaultSourceDirectorySet
-import org.gradle.api.tasks.compile.CompileOptions
-import org.gradle.internal.Factory
-import org.gradle.api.AntBuilder
-import org.gradle.api.internal.project.ProjectInternal
-import org.gradle.api.internal.tasks.compile.daemon.CompilerDaemonManager
-import org.gradle.api.internal.tasks.compile.DefaultJavaCompilerFactory
-import javax.tools.JavaCompiler
-import javax.tools.ToolProvider
-import java.util.Arrays
-import org.apache.commons.io.FileUtils
-import com.android.databinding.reflection.ModelAnalyzer
-import com.android.databinding.writer.JavaFileWriter
-import java.io.FileInputStream
-import java.io.FileOutputStream
-import org.apache.commons.io.IOUtils
-import java.io.FileWriter
-import java.io.ByteArrayOutputStream
-import org.apache.commons.codec.binary.Base64
-import com.android.builder.model.ApiVersion
-import com.android.databinding.util.Log
+import android.databinding.tool.writer.JavaFileWriter
+import android.databinding.tool.util.Log
 import org.gradle.api.Action
 import com.android.build.gradle.BaseExtension
 import com.android.build.gradle.LibraryExtension
 import com.android.build.gradle.api.LibraryVariant
 import com.android.build.gradle.api.ApplicationVariant
-import com.android.build.gradle.api.BaseVariant
 import com.android.build.gradle.internal.variant.BaseVariantData
-import com.android.build.gradle.internal.variant.ApkVariantData
 import com.android.build.gradle.internal.variant.LibraryVariantData
 import com.android.build.gradle.internal.api.LibraryVariantImpl
 import com.android.build.gradle.api.TestVariant
@@ -213,7 +183,7 @@
             if (packageTask !is org.gradle.api.tasks.bundling.Jar) {
                 throw RuntimeException("cannot find package task in $project $variantData project $packageJarTaskName")
             }
-            val excludePattern = "com/android/databinding/layouts/*.*"
+            val excludePattern = "android/databinding/layouts/*.*"
             val appPkgAsClass = packageName.replace('.', '/')
             packageTask.exclude(excludePattern)
             packageTask.exclude("$appPkgAsClass/generated/*")
diff --git a/gradlePlugin/src/main/resources/META-INF/gradle-plugins/com.android.databinding.properties b/gradlePlugin/src/main/resources/META-INF/gradle-plugins/com.android.databinding.properties
index d09f506..2e04d00 100644
--- a/gradlePlugin/src/main/resources/META-INF/gradle-plugins/com.android.databinding.properties
+++ b/gradlePlugin/src/main/resources/META-INF/gradle-plugins/com.android.databinding.properties
@@ -14,4 +14,4 @@
 # limitations under the License.
 #
 
-implementation-class=com.android.databinding.DataBinderPlugin
\ No newline at end of file
+implementation-class=android.databinding.tool.DataBinderPlugin
\ No newline at end of file
diff --git a/grammarBuilder/build.gradle b/grammarBuilder/build.gradle
index 2584dfa..b5f85a1 100644
--- a/grammarBuilder/build.gradle
+++ b/grammarBuilder/build.gradle
@@ -24,7 +24,7 @@
 mainClassName = "org.antlr.v4.Tool"
 
 run {
-    args "BindingExpression.g4", "-visitor", "-o", "src/main/java-gen/com/android/databinding", "-package", "com.android.databinding"
+    args "BindingExpression.g4", "-visitor", "-o", "src/main/java-gen/android/databinding/parser", "-package", "android.databinding.parser"
 }
 
 sourceSets {
diff --git a/grammarBuilder/src/main/java-gen/com/android/databinding/BindingExpression.tokens b/grammarBuilder/src/main/java-gen/android/databinding/parser/BindingExpression.tokens
similarity index 100%
rename from grammarBuilder/src/main/java-gen/com/android/databinding/BindingExpression.tokens
rename to grammarBuilder/src/main/java-gen/android/databinding/parser/BindingExpression.tokens
diff --git a/grammarBuilder/src/main/java-gen/com/android/databinding/BindingExpressionBaseListener.java b/grammarBuilder/src/main/java-gen/android/databinding/parser/BindingExpressionBaseListener.java
similarity index 99%
rename from grammarBuilder/src/main/java-gen/com/android/databinding/BindingExpressionBaseListener.java
rename to grammarBuilder/src/main/java-gen/android/databinding/parser/BindingExpressionBaseListener.java
index f1ad0b6..db87538 100644
--- a/grammarBuilder/src/main/java-gen/com/android/databinding/BindingExpressionBaseListener.java
+++ b/grammarBuilder/src/main/java-gen/android/databinding/parser/BindingExpressionBaseListener.java
@@ -1,5 +1,5 @@
 // Generated from BindingExpression.g4 by ANTLR 4.4
-package com.android.databinding;
+package android.databinding.parser;
 
 import org.antlr.v4.runtime.ParserRuleContext;
 import org.antlr.v4.runtime.Token;
diff --git a/grammarBuilder/src/main/java-gen/com/android/databinding/BindingExpressionBaseVisitor.java b/grammarBuilder/src/main/java-gen/android/databinding/parser/BindingExpressionBaseVisitor.java
similarity index 99%
rename from grammarBuilder/src/main/java-gen/com/android/databinding/BindingExpressionBaseVisitor.java
rename to grammarBuilder/src/main/java-gen/android/databinding/parser/BindingExpressionBaseVisitor.java
index ce846d8..d7d426e 100644
--- a/grammarBuilder/src/main/java-gen/com/android/databinding/BindingExpressionBaseVisitor.java
+++ b/grammarBuilder/src/main/java-gen/android/databinding/parser/BindingExpressionBaseVisitor.java
@@ -1,5 +1,5 @@
 // Generated from BindingExpression.g4 by ANTLR 4.4
-package com.android.databinding;
+package android.databinding.parser;
 import org.antlr.v4.runtime.Token;
 import org.antlr.v4.runtime.misc.NotNull;
 import org.antlr.v4.runtime.tree.AbstractParseTreeVisitor;
diff --git a/grammarBuilder/src/main/java-gen/com/android/databinding/BindingExpressionLexer.java b/grammarBuilder/src/main/java-gen/android/databinding/parser/BindingExpressionLexer.java
similarity index 99%
rename from grammarBuilder/src/main/java-gen/com/android/databinding/BindingExpressionLexer.java
rename to grammarBuilder/src/main/java-gen/android/databinding/parser/BindingExpressionLexer.java
index bd403d3..47eb769 100644
--- a/grammarBuilder/src/main/java-gen/com/android/databinding/BindingExpressionLexer.java
+++ b/grammarBuilder/src/main/java-gen/android/databinding/parser/BindingExpressionLexer.java
@@ -1,5 +1,5 @@
 // Generated from BindingExpression.g4 by ANTLR 4.4
-package com.android.databinding;
+package android.databinding.parser;
 import org.antlr.v4.runtime.Lexer;
 import org.antlr.v4.runtime.CharStream;
 import org.antlr.v4.runtime.Token;
diff --git a/grammarBuilder/src/main/java-gen/com/android/databinding/BindingExpressionLexer.tokens b/grammarBuilder/src/main/java-gen/android/databinding/parser/BindingExpressionLexer.tokens
similarity index 100%
rename from grammarBuilder/src/main/java-gen/com/android/databinding/BindingExpressionLexer.tokens
rename to grammarBuilder/src/main/java-gen/android/databinding/parser/BindingExpressionLexer.tokens
diff --git a/grammarBuilder/src/main/java-gen/com/android/databinding/BindingExpressionListener.java b/grammarBuilder/src/main/java-gen/android/databinding/parser/BindingExpressionListener.java
similarity index 99%
rename from grammarBuilder/src/main/java-gen/com/android/databinding/BindingExpressionListener.java
rename to grammarBuilder/src/main/java-gen/android/databinding/parser/BindingExpressionListener.java
index e1a4641..020be83 100644
--- a/grammarBuilder/src/main/java-gen/com/android/databinding/BindingExpressionListener.java
+++ b/grammarBuilder/src/main/java-gen/android/databinding/parser/BindingExpressionListener.java
@@ -1,5 +1,5 @@
 // Generated from BindingExpression.g4 by ANTLR 4.4
-package com.android.databinding;
+package android.databinding.parser;
 import org.antlr.v4.runtime.Token;
 import org.antlr.v4.runtime.misc.NotNull;
 import org.antlr.v4.runtime.tree.ParseTreeListener;
diff --git a/grammarBuilder/src/main/java-gen/com/android/databinding/BindingExpressionParser.java b/grammarBuilder/src/main/java-gen/android/databinding/parser/BindingExpressionParser.java
similarity index 99%
rename from grammarBuilder/src/main/java-gen/com/android/databinding/BindingExpressionParser.java
rename to grammarBuilder/src/main/java-gen/android/databinding/parser/BindingExpressionParser.java
index 71ce9a1..0d41591 100644
--- a/grammarBuilder/src/main/java-gen/com/android/databinding/BindingExpressionParser.java
+++ b/grammarBuilder/src/main/java-gen/android/databinding/parser/BindingExpressionParser.java
@@ -1,5 +1,5 @@
 // Generated from BindingExpression.g4 by ANTLR 4.4
-package com.android.databinding;
+package android.databinding.parser;
 import org.antlr.v4.runtime.atn.*;
 import org.antlr.v4.runtime.dfa.DFA;
 import org.antlr.v4.runtime.*;
diff --git a/grammarBuilder/src/main/java-gen/com/android/databinding/BindingExpressionVisitor.java b/grammarBuilder/src/main/java-gen/android/databinding/parser/BindingExpressionVisitor.java
similarity index 99%
rename from grammarBuilder/src/main/java-gen/com/android/databinding/BindingExpressionVisitor.java
rename to grammarBuilder/src/main/java-gen/android/databinding/parser/BindingExpressionVisitor.java
index 2793661..d589a7d 100644
--- a/grammarBuilder/src/main/java-gen/com/android/databinding/BindingExpressionVisitor.java
+++ b/grammarBuilder/src/main/java-gen/android/databinding/parser/BindingExpressionVisitor.java
@@ -1,5 +1,5 @@
 // Generated from BindingExpression.g4 by ANTLR 4.4
-package com.android.databinding;
+package android.databinding.parser;
 import org.antlr.v4.runtime.Token;
 import org.antlr.v4.runtime.misc.NotNull;
 import org.antlr.v4.runtime.tree.ParseTreeVisitor;
diff --git a/grammarBuilder/src/main/java-gen/com/android/databinding/DataBinder.tokens b/grammarBuilder/src/main/java-gen/com/android/databinding/DataBinder.tokens
deleted file mode 100644
index 3696716..0000000
--- a/grammarBuilder/src/main/java-gen/com/android/databinding/DataBinder.tokens
+++ /dev/null
@@ -1,31 +0,0 @@
-StringLiteral=17
-HackyStringLiteral=16
-WS=19
-BOOLEAN=15
-T__11=1
-CharacterLiteral=18
-T__1=11
-T__0=12
-T__10=2
-T__3=9
-T__2=10
-INT=14
-T__9=3
-T__8=4
-Identifier=13
-T__7=5
-T__6=6
-T__5=7
-T__4=8
-'?'=12
-'=='=11
-'/'=10
-':'=9
-'('=8
-'-'=7
-'*'=6
-'+'=5
-','=4
-'.'=3
-')'=2
-'null'=1
diff --git a/grammarBuilder/src/main/java-gen/com/android/databinding/DataBinderBaseListener.java b/grammarBuilder/src/main/java-gen/com/android/databinding/DataBinderBaseListener.java
deleted file mode 100644
index 200137f..0000000
--- a/grammarBuilder/src/main/java-gen/com/android/databinding/DataBinderBaseListener.java
+++ /dev/null
@@ -1,277 +0,0 @@
-/*
- * Copyright (C) 2014 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.
- */
-
-// Generated from DataBinder.g4 by ANTLR 4.4
-package com.android.databinding;
-
-import org.antlr.v4.runtime.ParserRuleContext;
-import org.antlr.v4.runtime.Token;
-import org.antlr.v4.runtime.misc.NotNull;
-import org.antlr.v4.runtime.tree.ErrorNode;
-import org.antlr.v4.runtime.tree.TerminalNode;
-
-/**
- * This class provides an empty implementation of {@link DataBinderListener},
- * which can be extended to create a listener which only needs to handle a subset
- * of the available methods.
- */
-public class DataBinderBaseListener implements DataBinderListener {
-	/**
-	 * {@inheritDoc}
-	 *
-	 * <p>The default implementation does nothing.</p>
-	 */
-	@Override public void enterSymbol(@NotNull DataBinderParser.SymbolContext ctx) { }
-	/**
-	 * {@inheritDoc}
-	 *
-	 * <p>The default implementation does nothing.</p>
-	 */
-	@Override public void exitSymbol(@NotNull DataBinderParser.SymbolContext ctx) { }
-
-	/**
-	 * {@inheritDoc}
-	 *
-	 * <p>The default implementation does nothing.</p>
-	 */
-	@Override public void enterIdExpr(@NotNull DataBinderParser.IdExprContext ctx) { }
-	/**
-	 * {@inheritDoc}
-	 *
-	 * <p>The default implementation does nothing.</p>
-	 */
-	@Override public void exitIdExpr(@NotNull DataBinderParser.IdExprContext ctx) { }
-
-	/**
-	 * {@inheritDoc}
-	 *
-	 * <p>The default implementation does nothing.</p>
-	 */
-	@Override public void enterAtomExpr(@NotNull DataBinderParser.AtomExprContext ctx) { }
-	/**
-	 * {@inheritDoc}
-	 *
-	 * <p>The default implementation does nothing.</p>
-	 */
-	@Override public void exitAtomExpr(@NotNull DataBinderParser.AtomExprContext ctx) { }
-
-	/**
-	 * {@inheritDoc}
-	 *
-	 * <p>The default implementation does nothing.</p>
-	 */
-	@Override public void enterExpr(@NotNull DataBinderParser.ExprContext ctx) { }
-	/**
-	 * {@inheritDoc}
-	 *
-	 * <p>The default implementation does nothing.</p>
-	 */
-	@Override public void exitExpr(@NotNull DataBinderParser.ExprContext ctx) { }
-
-	/**
-	 * {@inheritDoc}
-	 *
-	 * <p>The default implementation does nothing.</p>
-	 */
-	@Override public void enterTernaryExpr(@NotNull DataBinderParser.TernaryExprContext ctx) { }
-	/**
-	 * {@inheritDoc}
-	 *
-	 * <p>The default implementation does nothing.</p>
-	 */
-	@Override public void exitTernaryExpr(@NotNull DataBinderParser.TernaryExprContext ctx) { }
-
-	/**
-	 * {@inheritDoc}
-	 *
-	 * <p>The default implementation does nothing.</p>
-	 */
-	@Override public void enterGlobalMethodCallExpr(@NotNull DataBinderParser.GlobalMethodCallExprContext ctx) { }
-	/**
-	 * {@inheritDoc}
-	 *
-	 * <p>The default implementation does nothing.</p>
-	 */
-	@Override public void exitGlobalMethodCallExpr(@NotNull DataBinderParser.GlobalMethodCallExprContext ctx) { }
-
-	/**
-	 * {@inheritDoc}
-	 *
-	 * <p>The default implementation does nothing.</p>
-	 */
-	@Override public void enterInnerExpr(@NotNull DataBinderParser.InnerExprContext ctx) { }
-	/**
-	 * {@inheritDoc}
-	 *
-	 * <p>The default implementation does nothing.</p>
-	 */
-	@Override public void exitInnerExpr(@NotNull DataBinderParser.InnerExprContext ctx) { }
-
-	/**
-	 * {@inheritDoc}
-	 *
-	 * <p>The default implementation does nothing.</p>
-	 */
-	@Override public void enterField(@NotNull DataBinderParser.FieldContext ctx) { }
-	/**
-	 * {@inheritDoc}
-	 *
-	 * <p>The default implementation does nothing.</p>
-	 */
-	@Override public void exitField(@NotNull DataBinderParser.FieldContext ctx) { }
-
-	/**
-	 * {@inheritDoc}
-	 *
-	 * <p>The default implementation does nothing.</p>
-	 */
-	@Override public void enterOpExpr(@NotNull DataBinderParser.OpExprContext ctx) { }
-	/**
-	 * {@inheritDoc}
-	 *
-	 * <p>The default implementation does nothing.</p>
-	 */
-	@Override public void exitOpExpr(@NotNull DataBinderParser.OpExprContext ctx) { }
-
-	/**
-	 * {@inheritDoc}
-	 *
-	 * <p>The default implementation does nothing.</p>
-	 */
-	@Override public void enterNilExpr(@NotNull DataBinderParser.NilExprContext ctx) { }
-	/**
-	 * {@inheritDoc}
-	 *
-	 * <p>The default implementation does nothing.</p>
-	 */
-	@Override public void exitNilExpr(@NotNull DataBinderParser.NilExprContext ctx) { }
-
-	/**
-	 * {@inheritDoc}
-	 *
-	 * <p>The default implementation does nothing.</p>
-	 */
-	@Override public void enterStart(@NotNull DataBinderParser.StartContext ctx) { }
-	/**
-	 * {@inheritDoc}
-	 *
-	 * <p>The default implementation does nothing.</p>
-	 */
-	@Override public void exitStart(@NotNull DataBinderParser.StartContext ctx) { }
-
-	/**
-	 * {@inheritDoc}
-	 *
-	 * <p>The default implementation does nothing.</p>
-	 */
-	@Override public void enterHackyStringSymbol(@NotNull DataBinderParser.HackyStringSymbolContext ctx) { }
-	/**
-	 * {@inheritDoc}
-	 *
-	 * <p>The default implementation does nothing.</p>
-	 */
-	@Override public void exitHackyStringSymbol(@NotNull DataBinderParser.HackyStringSymbolContext ctx) { }
-
-	/**
-	 * {@inheritDoc}
-	 *
-	 * <p>The default implementation does nothing.</p>
-	 */
-	@Override public void enterHackyStringExpr(@NotNull DataBinderParser.HackyStringExprContext ctx) { }
-	/**
-	 * {@inheritDoc}
-	 *
-	 * <p>The default implementation does nothing.</p>
-	 */
-	@Override public void exitHackyStringExpr(@NotNull DataBinderParser.HackyStringExprContext ctx) { }
-
-	/**
-	 * {@inheritDoc}
-	 *
-	 * <p>The default implementation does nothing.</p>
-	 */
-	@Override public void enterMethodCallExpr(@NotNull DataBinderParser.MethodCallExprContext ctx) { }
-	/**
-	 * {@inheritDoc}
-	 *
-	 * <p>The default implementation does nothing.</p>
-	 */
-	@Override public void exitMethodCallExpr(@NotNull DataBinderParser.MethodCallExprContext ctx) { }
-
-	/**
-	 * {@inheritDoc}
-	 *
-	 * <p>The default implementation does nothing.</p>
-	 */
-	@Override public void enterEqExpr(@NotNull DataBinderParser.EqExprContext ctx) { }
-	/**
-	 * {@inheritDoc}
-	 *
-	 * <p>The default implementation does nothing.</p>
-	 */
-	@Override public void exitEqExpr(@NotNull DataBinderParser.EqExprContext ctx) { }
-
-	/**
-	 * {@inheritDoc}
-	 *
-	 * <p>The default implementation does nothing.</p>
-	 */
-	@Override public void enterNil(@NotNull DataBinderParser.NilContext ctx) { }
-	/**
-	 * {@inheritDoc}
-	 *
-	 * <p>The default implementation does nothing.</p>
-	 */
-	@Override public void exitNil(@NotNull DataBinderParser.NilContext ctx) { }
-
-	/**
-	 * {@inheritDoc}
-	 *
-	 * <p>The default implementation does nothing.</p>
-	 */
-	@Override public void enterExprList(@NotNull DataBinderParser.ExprListContext ctx) { }
-	/**
-	 * {@inheritDoc}
-	 *
-	 * <p>The default implementation does nothing.</p>
-	 */
-	@Override public void exitExprList(@NotNull DataBinderParser.ExprListContext ctx) { }
-
-	/**
-	 * {@inheritDoc}
-	 *
-	 * <p>The default implementation does nothing.</p>
-	 */
-	@Override public void enterEveryRule(@NotNull ParserRuleContext ctx) { }
-	/**
-	 * {@inheritDoc}
-	 *
-	 * <p>The default implementation does nothing.</p>
-	 */
-	@Override public void exitEveryRule(@NotNull ParserRuleContext ctx) { }
-	/**
-	 * {@inheritDoc}
-	 *
-	 * <p>The default implementation does nothing.</p>
-	 */
-	@Override public void visitTerminal(@NotNull TerminalNode node) { }
-	/**
-	 * {@inheritDoc}
-	 *
-	 * <p>The default implementation does nothing.</p>
-	 */
-	@Override public void visitErrorNode(@NotNull ErrorNode node) { }
-}
\ No newline at end of file
diff --git a/grammarBuilder/src/main/java-gen/com/android/databinding/DataBinderBaseVisitor.java b/grammarBuilder/src/main/java-gen/com/android/databinding/DataBinderBaseVisitor.java
deleted file mode 100644
index 61ce6d9..0000000
--- a/grammarBuilder/src/main/java-gen/com/android/databinding/DataBinderBaseVisitor.java
+++ /dev/null
@@ -1,167 +0,0 @@
-/*
- * Copyright (C) 2014 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.
- */
-
-// Generated from DataBinder.g4 by ANTLR 4.4
-package com.android.databinding;
-import org.antlr.v4.runtime.Token;
-import org.antlr.v4.runtime.misc.NotNull;
-import org.antlr.v4.runtime.tree.AbstractParseTreeVisitor;
-
-/**
- * This class provides an empty implementation of {@link DataBinderVisitor},
- * which can be extended to create a visitor which only needs to handle a subset
- * of the available methods.
- *
- * @param <Result> The return type of the visit operation. Use {@link Void} for
- * operations with no return type.
- */
-public class DataBinderBaseVisitor<Result> extends AbstractParseTreeVisitor<Result> implements DataBinderVisitor<Result> {
-	/**
-	 * {@inheritDoc}
-	 *
-	 * <p>The default implementation returns the result of calling
-	 * {@link #visitChildren} on {@code ctx}.</p>
-	 */
-	@Override public Result visitSymbol(@NotNull DataBinderParser.SymbolContext ctx) { return visitChildren(ctx); }
-
-	/**
-	 * {@inheritDoc}
-	 *
-	 * <p>The default implementation returns the result of calling
-	 * {@link #visitChildren} on {@code ctx}.</p>
-	 */
-	@Override public Result visitIdExpr(@NotNull DataBinderParser.IdExprContext ctx) { return visitChildren(ctx); }
-
-	/**
-	 * {@inheritDoc}
-	 *
-	 * <p>The default implementation returns the result of calling
-	 * {@link #visitChildren} on {@code ctx}.</p>
-	 */
-	@Override public Result visitAtomExpr(@NotNull DataBinderParser.AtomExprContext ctx) { return visitChildren(ctx); }
-
-	/**
-	 * {@inheritDoc}
-	 *
-	 * <p>The default implementation returns the result of calling
-	 * {@link #visitChildren} on {@code ctx}.</p>
-	 */
-	@Override public Result visitExpr(@NotNull DataBinderParser.ExprContext ctx) { return visitChildren(ctx); }
-
-	/**
-	 * {@inheritDoc}
-	 *
-	 * <p>The default implementation returns the result of calling
-	 * {@link #visitChildren} on {@code ctx}.</p>
-	 */
-	@Override public Result visitTernaryExpr(@NotNull DataBinderParser.TernaryExprContext ctx) { return visitChildren(ctx); }
-
-	/**
-	 * {@inheritDoc}
-	 *
-	 * <p>The default implementation returns the result of calling
-	 * {@link #visitChildren} on {@code ctx}.</p>
-	 */
-	@Override public Result visitGlobalMethodCallExpr(@NotNull DataBinderParser.GlobalMethodCallExprContext ctx) { return visitChildren(ctx); }
-
-	/**
-	 * {@inheritDoc}
-	 *
-	 * <p>The default implementation returns the result of calling
-	 * {@link #visitChildren} on {@code ctx}.</p>
-	 */
-	@Override public Result visitInnerExpr(@NotNull DataBinderParser.InnerExprContext ctx) { return visitChildren(ctx); }
-
-	/**
-	 * {@inheritDoc}
-	 *
-	 * <p>The default implementation returns the result of calling
-	 * {@link #visitChildren} on {@code ctx}.</p>
-	 */
-	@Override public Result visitField(@NotNull DataBinderParser.FieldContext ctx) { return visitChildren(ctx); }
-
-	/**
-	 * {@inheritDoc}
-	 *
-	 * <p>The default implementation returns the result of calling
-	 * {@link #visitChildren} on {@code ctx}.</p>
-	 */
-	@Override public Result visitOpExpr(@NotNull DataBinderParser.OpExprContext ctx) { return visitChildren(ctx); }
-
-	/**
-	 * {@inheritDoc}
-	 *
-	 * <p>The default implementation returns the result of calling
-	 * {@link #visitChildren} on {@code ctx}.</p>
-	 */
-	@Override public Result visitNilExpr(@NotNull DataBinderParser.NilExprContext ctx) { return visitChildren(ctx); }
-
-	/**
-	 * {@inheritDoc}
-	 *
-	 * <p>The default implementation returns the result of calling
-	 * {@link #visitChildren} on {@code ctx}.</p>
-	 */
-	@Override public Result visitStart(@NotNull DataBinderParser.StartContext ctx) { return visitChildren(ctx); }
-
-	/**
-	 * {@inheritDoc}
-	 *
-	 * <p>The default implementation returns the result of calling
-	 * {@link #visitChildren} on {@code ctx}.</p>
-	 */
-	@Override public Result visitHackyStringSymbol(@NotNull DataBinderParser.HackyStringSymbolContext ctx) { return visitChildren(ctx); }
-
-	/**
-	 * {@inheritDoc}
-	 *
-	 * <p>The default implementation returns the result of calling
-	 * {@link #visitChildren} on {@code ctx}.</p>
-	 */
-	@Override public Result visitHackyStringExpr(@NotNull DataBinderParser.HackyStringExprContext ctx) { return visitChildren(ctx); }
-
-	/**
-	 * {@inheritDoc}
-	 *
-	 * <p>The default implementation returns the result of calling
-	 * {@link #visitChildren} on {@code ctx}.</p>
-	 */
-	@Override public Result visitMethodCallExpr(@NotNull DataBinderParser.MethodCallExprContext ctx) { return visitChildren(ctx); }
-
-	/**
-	 * {@inheritDoc}
-	 *
-	 * <p>The default implementation returns the result of calling
-	 * {@link #visitChildren} on {@code ctx}.</p>
-	 */
-	@Override public Result visitEqExpr(@NotNull DataBinderParser.EqExprContext ctx) { return visitChildren(ctx); }
-
-	/**
-	 * {@inheritDoc}
-	 *
-	 * <p>The default implementation returns the result of calling
-	 * {@link #visitChildren} on {@code ctx}.</p>
-	 */
-	@Override public Result visitNil(@NotNull DataBinderParser.NilContext ctx) { return visitChildren(ctx); }
-
-	/**
-	 * {@inheritDoc}
-	 *
-	 * <p>The default implementation returns the result of calling
-	 * {@link #visitChildren} on {@code ctx}.</p>
-	 */
-	@Override public Result visitExprList(@NotNull DataBinderParser.ExprListContext ctx) { return visitChildren(ctx); }
-}
\ No newline at end of file
diff --git a/grammarBuilder/src/main/java-gen/com/android/databinding/DataBinderLexer.java b/grammarBuilder/src/main/java-gen/com/android/databinding/DataBinderLexer.java
deleted file mode 100644
index 043eda1..0000000
--- a/grammarBuilder/src/main/java-gen/com/android/databinding/DataBinderLexer.java
+++ /dev/null
@@ -1,146 +0,0 @@
-/*
- * Copyright (C) 2014 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.
- */
-
-// Generated from DataBinder.g4 by ANTLR 4.4
-package com.android.databinding;
-import org.antlr.v4.runtime.Lexer;
-import org.antlr.v4.runtime.CharStream;
-import org.antlr.v4.runtime.Token;
-import org.antlr.v4.runtime.TokenStream;
-import org.antlr.v4.runtime.*;
-import org.antlr.v4.runtime.atn.*;
-import org.antlr.v4.runtime.dfa.DFA;
-import org.antlr.v4.runtime.misc.*;
-
-public class DataBinderLexer extends Lexer {
-	public static final int
-		T__11=1, T__10=2, T__9=3, T__8=4, T__7=5, T__6=6, T__5=7, T__4=8, T__3=9, 
-		T__2=10, T__1=11, T__0=12, Identifier=13, INT=14, BOOLEAN=15, HackyStringLiteral=16, 
-		StringLiteral=17, CharacterLiteral=18, WS=19;
-	public static String[] modeNames = {
-		"DEFAULT_MODE"
-	};
-
-	public static final String[] tokenNames = {
-		"'\\u0000'", "'\\u0001'", "'\\u0002'", "'\\u0003'", "'\\u0004'", "'\\u0005'", 
-		"'\\u0006'", "'\\u0007'", "'\b'", "'\t'", "'\n'", "'\\u000B'", "'\f'", 
-		"'\r'", "'\\u000E'", "'\\u000F'", "'\\u0010'", "'\\u0011'", "'\\u0012'", 
-		"'\\u0013'"
-	};
-	public static final String[] ruleNames = {
-		"T__11", "T__10", "T__9", "T__8", "T__7", "T__6", "T__5", "T__4", "T__3", 
-		"T__2", "T__1", "T__0", "Identifier", "INT", "BOOLEAN", "JavaLetter", 
-		"JavaLetterOrDigit", "HackyStringLiteral", "StringLiteral", "CharacterLiteral", 
-		"SingleCharacter", "StringCharacters", "StringCharacter", "WS"
-	};
-
-
-	public DataBinderLexer(CharStream input) {
-		super(input);
-		_interp = new LexerATNSimulator(this,_ATN);
-	}
-
-	@Override
-	public String getGrammarFileName() { return "DataBinder.g4"; }
-
-	@Override
-	public String[] getTokenNames() { return tokenNames; }
-
-	@Override
-	public String[] getRuleNames() { return ruleNames; }
-
-	@Override
-	public String getSerializedATN() { return _serializedATN; }
-
-	@Override
-	public String[] getModeNames() { return modeNames; }
-
-	@Override
-	public boolean sempred(RuleContext _localctx, int ruleIndex, int predIndex) {
-		switch (ruleIndex) {
-		case 15 : return JavaLetter_sempred(_localctx, predIndex);
-
-		case 16 : return JavaLetterOrDigit_sempred(_localctx, predIndex);
-		}
-		return true;
-	}
-	private boolean JavaLetterOrDigit_sempred(RuleContext _localctx, int predIndex) {
-		switch (predIndex) {
-		case 2: return Character.isJavaIdentifierPart(_input.LA(-1));
-
-		case 3: return Character.isJavaIdentifierPart(Character.toCodePoint((char)_input.LA(-2), (char)_input.LA(-1)));
-		}
-		return true;
-	}
-	private boolean JavaLetter_sempred(RuleContext _localctx, int predIndex) {
-		switch (predIndex) {
-		case 0: return Character.isJavaIdentifierStart(_input.LA(-1));
-
-		case 1: return Character.isJavaIdentifierStart(Character.toCodePoint((char)_input.LA(-2), (char)_input.LA(-1)));
-		}
-		return true;
-	}
-
-	public static final String _serializedATN =
-		"\3\uaf6f\u8320\u479d\ub75c\u4880\u1605\u191c\uab37\2\25\u0096\b\1\4\2"+
-		"\t\2\4\3\t\3\4\4\t\4\4\5\t\5\4\6\t\6\4\7\t\7\4\b\t\b\4\t\t\t\4\n\t\n\4"+
-		"\13\t\13\4\f\t\f\4\r\t\r\4\16\t\16\4\17\t\17\4\20\t\20\4\21\t\21\4\22"+
-		"\t\22\4\23\t\23\4\24\t\24\4\25\t\25\4\26\t\26\4\27\t\27\4\30\t\30\4\31"+
-		"\t\31\3\2\3\2\3\2\3\2\3\2\3\3\3\3\3\4\3\4\3\5\3\5\3\6\3\6\3\7\3\7\3\b"+
-		"\3\b\3\t\3\t\3\n\3\n\3\13\3\13\3\f\3\f\3\f\3\r\3\r\3\16\3\16\7\16R\n\16"+
-		"\f\16\16\16U\13\16\3\17\6\17X\n\17\r\17\16\17Y\3\20\3\20\3\20\3\20\3\20"+
-		"\3\20\3\20\3\20\3\20\5\20e\n\20\3\21\3\21\3\21\3\21\3\21\3\21\5\21m\n"+
-		"\21\3\22\3\22\3\22\3\22\3\22\3\22\5\22u\n\22\3\23\3\23\5\23y\n\23\3\23"+
-		"\3\23\3\24\3\24\5\24\177\n\24\3\24\3\24\3\25\3\25\3\25\3\25\3\26\3\26"+
-		"\3\27\6\27\u008a\n\27\r\27\16\27\u008b\3\30\3\30\3\31\6\31\u0091\n\31"+
-		"\r\31\16\31\u0092\3\31\3\31\2\2\2\32\3\2\3\5\2\4\7\2\5\t\2\6\13\2\7\r"+
-		"\2\b\17\2\t\21\2\n\23\2\13\25\2\f\27\2\r\31\2\16\33\2\17\35\2\20\37\2"+
-		"\21!\2\2#\2\2%\2\22\'\2\23)\2\24+\2\2-\2\2/\2\2\61\2\25\3\2\n\6\2&&C\\"+
-		"aac|\4\2\2\u0101\ud802\udc01\3\2\ud802\udc01\3\2\udc02\ue001\7\2&&\62"+
-		";C\\aac|\4\2))^^\4\2$$^^\5\2\13\f\17\17\"\"\u009b\2\3\3\2\2\2\2\5\3\2"+
-		"\2\2\2\7\3\2\2\2\2\t\3\2\2\2\2\13\3\2\2\2\2\r\3\2\2\2\2\17\3\2\2\2\2\21"+
-		"\3\2\2\2\2\23\3\2\2\2\2\25\3\2\2\2\2\27\3\2\2\2\2\31\3\2\2\2\2\33\3\2"+
-		"\2\2\2\35\3\2\2\2\2\37\3\2\2\2\2%\3\2\2\2\2\'\3\2\2\2\2)\3\2\2\2\2\61"+
-		"\3\2\2\2\3\63\3\2\2\2\58\3\2\2\2\7:\3\2\2\2\t<\3\2\2\2\13>\3\2\2\2\r@"+
-		"\3\2\2\2\17B\3\2\2\2\21D\3\2\2\2\23F\3\2\2\2\25H\3\2\2\2\27J\3\2\2\2\31"+
-		"M\3\2\2\2\33O\3\2\2\2\35W\3\2\2\2\37d\3\2\2\2!l\3\2\2\2#t\3\2\2\2%v\3"+
-		"\2\2\2\'|\3\2\2\2)\u0082\3\2\2\2+\u0086\3\2\2\2-\u0089\3\2\2\2/\u008d"+
-		"\3\2\2\2\61\u0090\3\2\2\2\63\64\7p\2\2\64\65\7w\2\2\65\66\7n\2\2\66\67"+
-		"\7n\2\2\67\4\3\2\2\289\7+\2\29\6\3\2\2\2:;\7\60\2\2;\b\3\2\2\2<=\7.\2"+
-		"\2=\n\3\2\2\2>?\7-\2\2?\f\3\2\2\2@A\7,\2\2A\16\3\2\2\2BC\7/\2\2C\20\3"+
-		"\2\2\2DE\7*\2\2E\22\3\2\2\2FG\7<\2\2G\24\3\2\2\2HI\7\61\2\2I\26\3\2\2"+
-		"\2JK\7?\2\2KL\7?\2\2L\30\3\2\2\2MN\7A\2\2N\32\3\2\2\2OS\5!\21\2PR\5#\22"+
-		"\2QP\3\2\2\2RU\3\2\2\2SQ\3\2\2\2ST\3\2\2\2T\34\3\2\2\2US\3\2\2\2VX\4\62"+
-		";\2WV\3\2\2\2XY\3\2\2\2YW\3\2\2\2YZ\3\2\2\2Z\36\3\2\2\2[\\\7v\2\2\\]\7"+
-		"t\2\2]^\7w\2\2^e\7g\2\2_`\7h\2\2`a\7c\2\2ab\7n\2\2bc\7u\2\2ce\7g\2\2d"+
-		"[\3\2\2\2d_\3\2\2\2e \3\2\2\2fm\t\2\2\2gh\n\3\2\2hm\6\21\2\2ij\t\4\2\2"+
-		"jk\t\5\2\2km\6\21\3\2lf\3\2\2\2lg\3\2\2\2li\3\2\2\2m\"\3\2\2\2nu\t\6\2"+
-		"\2op\n\3\2\2pu\6\22\4\2qr\t\4\2\2rs\t\5\2\2su\6\22\5\2tn\3\2\2\2to\3\2"+
-		"\2\2tq\3\2\2\2u$\3\2\2\2vx\7b\2\2wy\5-\27\2xw\3\2\2\2xy\3\2\2\2yz\3\2"+
-		"\2\2z{\7b\2\2{&\3\2\2\2|~\7$\2\2}\177\5-\27\2~}\3\2\2\2~\177\3\2\2\2\177"+
-		"\u0080\3\2\2\2\u0080\u0081\7$\2\2\u0081(\3\2\2\2\u0082\u0083\7)\2\2\u0083"+
-		"\u0084\5+\26\2\u0084\u0085\7)\2\2\u0085*\3\2\2\2\u0086\u0087\n\7\2\2\u0087"+
-		",\3\2\2\2\u0088\u008a\5/\30\2\u0089\u0088\3\2\2\2\u008a\u008b\3\2\2\2"+
-		"\u008b\u0089\3\2\2\2\u008b\u008c\3\2\2\2\u008c.\3\2\2\2\u008d\u008e\n"+
-		"\b\2\2\u008e\60\3\2\2\2\u008f\u0091\t\t\2\2\u0090\u008f\3\2\2\2\u0091"+
-		"\u0092\3\2\2\2\u0092\u0090\3\2\2\2\u0092\u0093\3\2\2\2\u0093\u0094\3\2"+
-		"\2\2\u0094\u0095\b\31\2\2\u0095\62\3\2\2\2\f\2SYdltx~\u008b\u0092\3\b"+
-		"\2\2";
-	public static final ATN _ATN =
-		new ATNDeserializer().deserialize(_serializedATN.toCharArray());
-	static {
-	}
-}
\ No newline at end of file
diff --git a/grammarBuilder/src/main/java-gen/com/android/databinding/DataBinderLexer.tokens b/grammarBuilder/src/main/java-gen/com/android/databinding/DataBinderLexer.tokens
deleted file mode 100644
index 3696716..0000000
--- a/grammarBuilder/src/main/java-gen/com/android/databinding/DataBinderLexer.tokens
+++ /dev/null
@@ -1,31 +0,0 @@
-StringLiteral=17
-HackyStringLiteral=16
-WS=19
-BOOLEAN=15
-T__11=1
-CharacterLiteral=18
-T__1=11
-T__0=12
-T__10=2
-T__3=9
-T__2=10
-INT=14
-T__9=3
-T__8=4
-Identifier=13
-T__7=5
-T__6=6
-T__5=7
-T__4=8
-'?'=12
-'=='=11
-'/'=10
-':'=9
-'('=8
-'-'=7
-'*'=6
-'+'=5
-','=4
-'.'=3
-')'=2
-'null'=1
diff --git a/grammarBuilder/src/main/java-gen/com/android/databinding/DataBinderListener.java b/grammarBuilder/src/main/java-gen/com/android/databinding/DataBinderListener.java
deleted file mode 100644
index 9122741..0000000
--- a/grammarBuilder/src/main/java-gen/com/android/databinding/DataBinderListener.java
+++ /dev/null
@@ -1,234 +0,0 @@
-/*
- * Copyright (C) 2014 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.
- */
-
-// Generated from DataBinder.g4 by ANTLR 4.4
-package com.android.databinding;
-import org.antlr.v4.runtime.Token;
-import org.antlr.v4.runtime.misc.NotNull;
-import org.antlr.v4.runtime.tree.ParseTreeListener;
-
-/**
- * This interface defines a complete listener for a parse tree produced by
- * {@link DataBinderParser}.
- */
-public interface DataBinderListener extends ParseTreeListener {
-	/**
-	 * Enter a parse tree produced by {@link DataBinderParser#symbol}.
-	 * @param ctx the parse tree
-	 */
-	void enterSymbol(@NotNull DataBinderParser.SymbolContext ctx);
-	/**
-	 * Exit a parse tree produced by {@link DataBinderParser#symbol}.
-	 * @param ctx the parse tree
-	 */
-	void exitSymbol(@NotNull DataBinderParser.SymbolContext ctx);
-
-	/**
-	 * Enter a parse tree produced by the {@code idExpr}
-	 * labeled alternative in {@link DataBinderParser#expr}.
-	 * @param ctx the parse tree
-	 */
-	void enterIdExpr(@NotNull DataBinderParser.IdExprContext ctx);
-	/**
-	 * Exit a parse tree produced by the {@code idExpr}
-	 * labeled alternative in {@link DataBinderParser#expr}.
-	 * @param ctx the parse tree
-	 */
-	void exitIdExpr(@NotNull DataBinderParser.IdExprContext ctx);
-
-	/**
-	 * Enter a parse tree produced by the {@code atomExpr}
-	 * labeled alternative in {@link DataBinderParser#expr}.
-	 * @param ctx the parse tree
-	 */
-	void enterAtomExpr(@NotNull DataBinderParser.AtomExprContext ctx);
-	/**
-	 * Exit a parse tree produced by the {@code atomExpr}
-	 * labeled alternative in {@link DataBinderParser#expr}.
-	 * @param ctx the parse tree
-	 */
-	void exitAtomExpr(@NotNull DataBinderParser.AtomExprContext ctx);
-
-	/**
-	 * Enter a parse tree produced by {@link DataBinderParser#expr}.
-	 * @param ctx the parse tree
-	 */
-	void enterExpr(@NotNull DataBinderParser.ExprContext ctx);
-	/**
-	 * Exit a parse tree produced by {@link DataBinderParser#expr}.
-	 * @param ctx the parse tree
-	 */
-	void exitExpr(@NotNull DataBinderParser.ExprContext ctx);
-
-	/**
-	 * Enter a parse tree produced by the {@code ternaryExpr}
-	 * labeled alternative in {@link DataBinderParser#expr}.
-	 * @param ctx the parse tree
-	 */
-	void enterTernaryExpr(@NotNull DataBinderParser.TernaryExprContext ctx);
-	/**
-	 * Exit a parse tree produced by the {@code ternaryExpr}
-	 * labeled alternative in {@link DataBinderParser#expr}.
-	 * @param ctx the parse tree
-	 */
-	void exitTernaryExpr(@NotNull DataBinderParser.TernaryExprContext ctx);
-
-	/**
-	 * Enter a parse tree produced by the {@code globalMethodCallExpr}
-	 * labeled alternative in {@link DataBinderParser#expr}.
-	 * @param ctx the parse tree
-	 */
-	void enterGlobalMethodCallExpr(@NotNull DataBinderParser.GlobalMethodCallExprContext ctx);
-	/**
-	 * Exit a parse tree produced by the {@code globalMethodCallExpr}
-	 * labeled alternative in {@link DataBinderParser#expr}.
-	 * @param ctx the parse tree
-	 */
-	void exitGlobalMethodCallExpr(@NotNull DataBinderParser.GlobalMethodCallExprContext ctx);
-
-	/**
-	 * Enter a parse tree produced by the {@code innerExpr}
-	 * labeled alternative in {@link DataBinderParser#expr}.
-	 * @param ctx the parse tree
-	 */
-	void enterInnerExpr(@NotNull DataBinderParser.InnerExprContext ctx);
-	/**
-	 * Exit a parse tree produced by the {@code innerExpr}
-	 * labeled alternative in {@link DataBinderParser#expr}.
-	 * @param ctx the parse tree
-	 */
-	void exitInnerExpr(@NotNull DataBinderParser.InnerExprContext ctx);
-
-	/**
-	 * Enter a parse tree produced by {@link DataBinderParser#field}.
-	 * @param ctx the parse tree
-	 */
-	void enterField(@NotNull DataBinderParser.FieldContext ctx);
-	/**
-	 * Exit a parse tree produced by {@link DataBinderParser#field}.
-	 * @param ctx the parse tree
-	 */
-	void exitField(@NotNull DataBinderParser.FieldContext ctx);
-
-	/**
-	 * Enter a parse tree produced by the {@code opExpr}
-	 * labeled alternative in {@link DataBinderParser#expr}.
-	 * @param ctx the parse tree
-	 */
-	void enterOpExpr(@NotNull DataBinderParser.OpExprContext ctx);
-	/**
-	 * Exit a parse tree produced by the {@code opExpr}
-	 * labeled alternative in {@link DataBinderParser#expr}.
-	 * @param ctx the parse tree
-	 */
-	void exitOpExpr(@NotNull DataBinderParser.OpExprContext ctx);
-
-	/**
-	 * Enter a parse tree produced by the {@code nilExpr}
-	 * labeled alternative in {@link DataBinderParser#expr}.
-	 * @param ctx the parse tree
-	 */
-	void enterNilExpr(@NotNull DataBinderParser.NilExprContext ctx);
-	/**
-	 * Exit a parse tree produced by the {@code nilExpr}
-	 * labeled alternative in {@link DataBinderParser#expr}.
-	 * @param ctx the parse tree
-	 */
-	void exitNilExpr(@NotNull DataBinderParser.NilExprContext ctx);
-
-	/**
-	 * Enter a parse tree produced by {@link DataBinderParser#start}.
-	 * @param ctx the parse tree
-	 */
-	void enterStart(@NotNull DataBinderParser.StartContext ctx);
-	/**
-	 * Exit a parse tree produced by {@link DataBinderParser#start}.
-	 * @param ctx the parse tree
-	 */
-	void exitStart(@NotNull DataBinderParser.StartContext ctx);
-
-	/**
-	 * Enter a parse tree produced by {@link DataBinderParser#hackyStringSymbol}.
-	 * @param ctx the parse tree
-	 */
-	void enterHackyStringSymbol(@NotNull DataBinderParser.HackyStringSymbolContext ctx);
-	/**
-	 * Exit a parse tree produced by {@link DataBinderParser#hackyStringSymbol}.
-	 * @param ctx the parse tree
-	 */
-	void exitHackyStringSymbol(@NotNull DataBinderParser.HackyStringSymbolContext ctx);
-
-	/**
-	 * Enter a parse tree produced by the {@code hackyStringExpr}
-	 * labeled alternative in {@link DataBinderParser#expr}.
-	 * @param ctx the parse tree
-	 */
-	void enterHackyStringExpr(@NotNull DataBinderParser.HackyStringExprContext ctx);
-	/**
-	 * Exit a parse tree produced by the {@code hackyStringExpr}
-	 * labeled alternative in {@link DataBinderParser#expr}.
-	 * @param ctx the parse tree
-	 */
-	void exitHackyStringExpr(@NotNull DataBinderParser.HackyStringExprContext ctx);
-
-	/**
-	 * Enter a parse tree produced by the {@code methodCallExpr}
-	 * labeled alternative in {@link DataBinderParser#expr}.
-	 * @param ctx the parse tree
-	 */
-	void enterMethodCallExpr(@NotNull DataBinderParser.MethodCallExprContext ctx);
-	/**
-	 * Exit a parse tree produced by the {@code methodCallExpr}
-	 * labeled alternative in {@link DataBinderParser#expr}.
-	 * @param ctx the parse tree
-	 */
-	void exitMethodCallExpr(@NotNull DataBinderParser.MethodCallExprContext ctx);
-
-	/**
-	 * Enter a parse tree produced by the {@code eqExpr}
-	 * labeled alternative in {@link DataBinderParser#expr}.
-	 * @param ctx the parse tree
-	 */
-	void enterEqExpr(@NotNull DataBinderParser.EqExprContext ctx);
-	/**
-	 * Exit a parse tree produced by the {@code eqExpr}
-	 * labeled alternative in {@link DataBinderParser#expr}.
-	 * @param ctx the parse tree
-	 */
-	void exitEqExpr(@NotNull DataBinderParser.EqExprContext ctx);
-
-	/**
-	 * Enter a parse tree produced by {@link DataBinderParser#nil}.
-	 * @param ctx the parse tree
-	 */
-	void enterNil(@NotNull DataBinderParser.NilContext ctx);
-	/**
-	 * Exit a parse tree produced by {@link DataBinderParser#nil}.
-	 * @param ctx the parse tree
-	 */
-	void exitNil(@NotNull DataBinderParser.NilContext ctx);
-
-	/**
-	 * Enter a parse tree produced by {@link DataBinderParser#exprList}.
-	 * @param ctx the parse tree
-	 */
-	void enterExprList(@NotNull DataBinderParser.ExprListContext ctx);
-	/**
-	 * Exit a parse tree produced by {@link DataBinderParser#exprList}.
-	 * @param ctx the parse tree
-	 */
-	void exitExprList(@NotNull DataBinderParser.ExprListContext ctx);
-}
\ No newline at end of file
diff --git a/grammarBuilder/src/main/java-gen/com/android/databinding/DataBinderParser.java b/grammarBuilder/src/main/java-gen/com/android/databinding/DataBinderParser.java
deleted file mode 100644
index a6b4d3c..0000000
--- a/grammarBuilder/src/main/java-gen/com/android/databinding/DataBinderParser.java
+++ /dev/null
@@ -1,845 +0,0 @@
-/*
- * Copyright (C) 2014 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.
- */
-
-// Generated from DataBinder.g4 by ANTLR 4.4
-package com.android.databinding;
-import org.antlr.v4.runtime.atn.*;
-import org.antlr.v4.runtime.dfa.DFA;
-import org.antlr.v4.runtime.*;
-import org.antlr.v4.runtime.misc.*;
-import org.antlr.v4.runtime.tree.*;
-import java.util.List;
-import java.util.Iterator;
-import java.util.ArrayList;
-
-public class DataBinderParser extends Parser {
-	public static final int
-		T__11=1, T__10=2, T__9=3, T__8=4, T__7=5, T__6=6, T__5=7, T__4=8, T__3=9, 
-		T__2=10, T__1=11, T__0=12, Identifier=13, INT=14, BOOLEAN=15, HackyStringLiteral=16, 
-		StringLiteral=17, CharacterLiteral=18, WS=19;
-	public static final String[] tokenNames = {
-		"<INVALID>", "'null'", "')'", "'.'", "','", "'+'", "'*'", "'-'", "'('", 
-		"':'", "'/'", "'=='", "'?'", "Identifier", "INT", "BOOLEAN", "HackyStringLiteral", 
-		"StringLiteral", "CharacterLiteral", "WS"
-	};
-	public static final int
-		RULE_start = 0, RULE_expr = 1, RULE_exprList = 2, RULE_field = 3, RULE_hackyStringSymbol = 4, 
-		RULE_symbol = 5, RULE_nil = 6;
-	public static final String[] ruleNames = {
-		"start", "expr", "exprList", "field", "hackyStringSymbol", "symbol", "nil"
-	};
-
-	@Override
-	public String getGrammarFileName() { return "DataBinder.g4"; }
-
-	@Override
-	public String[] getTokenNames() { return tokenNames; }
-
-	@Override
-	public String[] getRuleNames() { return ruleNames; }
-
-	@Override
-	public String getSerializedATN() { return _serializedATN; }
-
-	public DataBinderParser(TokenStream input) {
-		super(input);
-		_interp = new ParserATNSimulator(this,_ATN);
-	}
-	public static class StartContext extends ParserRuleContext {
-		public ExprContext expr() {
-			return getRuleContext(ExprContext.class,0);
-		}
-		public StartContext(ParserRuleContext parent, int invokingState) {
-			super(parent, invokingState);
-		}
-		@Override public int getRuleIndex() { return RULE_start; }
-		@Override
-		public void enterRule(ParseTreeListener listener) {
-			if ( listener instanceof DataBinderListener ) ((DataBinderListener)listener).enterStart(this);
-		}
-		@Override
-		public void exitRule(ParseTreeListener listener) {
-			if ( listener instanceof DataBinderListener ) ((DataBinderListener)listener).exitStart(this);
-		}
-		@Override
-		public <Result> Result accept(ParseTreeVisitor<? extends Result> visitor) {
-			if ( visitor instanceof DataBinderVisitor<?> ) return ((DataBinderVisitor<? extends Result>)visitor).visitStart(this);
-			else return visitor.visitChildren(this);
-		}
-	}
-
-	@RuleVersion(0)
-	public final StartContext start() throws RecognitionException {
-		StartContext _localctx = new StartContext(_ctx, getState());
-		enterRule(_localctx, 0, RULE_start);
-		try {
-			enterOuterAlt(_localctx, 1);
-			{
-			setState(14); expr(0);
-			}
-		}
-		catch (RecognitionException re) {
-			_localctx.exception = re;
-			_errHandler.reportError(this, re);
-			_errHandler.recover(this, re);
-		}
-		finally {
-			exitRule();
-		}
-		return _localctx;
-	}
-
-	public static class ExprContext extends ParserRuleContext {
-		public ExprContext(ParserRuleContext parent, int invokingState) {
-			super(parent, invokingState);
-		}
-		@Override public int getRuleIndex() { return RULE_expr; }
-	 
-		public ExprContext() { }
-		public void copyFrom(ExprContext ctx) {
-			super.copyFrom(ctx);
-		}
-	}
-	public static class OpExprContext extends ExprContext {
-		public ExprContext left;
-		public Token op;
-		public ExprContext right;
-		public List<? extends ExprContext> expr() {
-			return getRuleContexts(ExprContext.class);
-		}
-		public ExprContext expr(int i) {
-			return getRuleContext(ExprContext.class,i);
-		}
-		public OpExprContext(ExprContext ctx) { copyFrom(ctx); }
-		@Override
-		public void enterRule(ParseTreeListener listener) {
-			if ( listener instanceof DataBinderListener ) ((DataBinderListener)listener).enterOpExpr(this);
-		}
-		@Override
-		public void exitRule(ParseTreeListener listener) {
-			if ( listener instanceof DataBinderListener ) ((DataBinderListener)listener).exitOpExpr(this);
-		}
-		@Override
-		public <Result> Result accept(ParseTreeVisitor<? extends Result> visitor) {
-			if ( visitor instanceof DataBinderVisitor<?> ) return ((DataBinderVisitor<? extends Result>)visitor).visitOpExpr(this);
-			else return visitor.visitChildren(this);
-		}
-	}
-	public static class NilExprContext extends ExprContext {
-		public NilContext nil() {
-			return getRuleContext(NilContext.class,0);
-		}
-		public NilExprContext(ExprContext ctx) { copyFrom(ctx); }
-		@Override
-		public void enterRule(ParseTreeListener listener) {
-			if ( listener instanceof DataBinderListener ) ((DataBinderListener)listener).enterNilExpr(this);
-		}
-		@Override
-		public void exitRule(ParseTreeListener listener) {
-			if ( listener instanceof DataBinderListener ) ((DataBinderListener)listener).exitNilExpr(this);
-		}
-		@Override
-		public <Result> Result accept(ParseTreeVisitor<? extends Result> visitor) {
-			if ( visitor instanceof DataBinderVisitor<?> ) return ((DataBinderVisitor<? extends Result>)visitor).visitNilExpr(this);
-			else return visitor.visitChildren(this);
-		}
-	}
-	public static class IdExprContext extends ExprContext {
-		public FieldContext field() {
-			return getRuleContext(FieldContext.class,0);
-		}
-		public IdExprContext(ExprContext ctx) { copyFrom(ctx); }
-		@Override
-		public void enterRule(ParseTreeListener listener) {
-			if ( listener instanceof DataBinderListener ) ((DataBinderListener)listener).enterIdExpr(this);
-		}
-		@Override
-		public void exitRule(ParseTreeListener listener) {
-			if ( listener instanceof DataBinderListener ) ((DataBinderListener)listener).exitIdExpr(this);
-		}
-		@Override
-		public <Result> Result accept(ParseTreeVisitor<? extends Result> visitor) {
-			if ( visitor instanceof DataBinderVisitor<?> ) return ((DataBinderVisitor<? extends Result>)visitor).visitIdExpr(this);
-			else return visitor.visitChildren(this);
-		}
-	}
-	public static class AtomExprContext extends ExprContext {
-		public SymbolContext atom;
-		public SymbolContext symbol() {
-			return getRuleContext(SymbolContext.class,0);
-		}
-		public AtomExprContext(ExprContext ctx) { copyFrom(ctx); }
-		@Override
-		public void enterRule(ParseTreeListener listener) {
-			if ( listener instanceof DataBinderListener ) ((DataBinderListener)listener).enterAtomExpr(this);
-		}
-		@Override
-		public void exitRule(ParseTreeListener listener) {
-			if ( listener instanceof DataBinderListener ) ((DataBinderListener)listener).exitAtomExpr(this);
-		}
-		@Override
-		public <Result> Result accept(ParseTreeVisitor<? extends Result> visitor) {
-			if ( visitor instanceof DataBinderVisitor<?> ) return ((DataBinderVisitor<? extends Result>)visitor).visitAtomExpr(this);
-			else return visitor.visitChildren(this);
-		}
-	}
-	public static class HackyStringExprContext extends ExprContext {
-		public HackyStringSymbolContext atomString;
-		public HackyStringSymbolContext hackyStringSymbol() {
-			return getRuleContext(HackyStringSymbolContext.class,0);
-		}
-		public HackyStringExprContext(ExprContext ctx) { copyFrom(ctx); }
-		@Override
-		public void enterRule(ParseTreeListener listener) {
-			if ( listener instanceof DataBinderListener ) ((DataBinderListener)listener).enterHackyStringExpr(this);
-		}
-		@Override
-		public void exitRule(ParseTreeListener listener) {
-			if ( listener instanceof DataBinderListener ) ((DataBinderListener)listener).exitHackyStringExpr(this);
-		}
-		@Override
-		public <Result> Result accept(ParseTreeVisitor<? extends Result> visitor) {
-			if ( visitor instanceof DataBinderVisitor<?> ) return ((DataBinderVisitor<? extends Result>)visitor).visitHackyStringExpr(this);
-			else return visitor.visitChildren(this);
-		}
-	}
-	public static class TernaryExprContext extends ExprContext {
-		public ExprContext pred;
-		public ExprContext t;
-		public ExprContext f;
-		public List<? extends ExprContext> expr() {
-			return getRuleContexts(ExprContext.class);
-		}
-		public ExprContext expr(int i) {
-			return getRuleContext(ExprContext.class,i);
-		}
-		public TernaryExprContext(ExprContext ctx) { copyFrom(ctx); }
-		@Override
-		public void enterRule(ParseTreeListener listener) {
-			if ( listener instanceof DataBinderListener ) ((DataBinderListener)listener).enterTernaryExpr(this);
-		}
-		@Override
-		public void exitRule(ParseTreeListener listener) {
-			if ( listener instanceof DataBinderListener ) ((DataBinderListener)listener).exitTernaryExpr(this);
-		}
-		@Override
-		public <Result> Result accept(ParseTreeVisitor<? extends Result> visitor) {
-			if ( visitor instanceof DataBinderVisitor<?> ) return ((DataBinderVisitor<? extends Result>)visitor).visitTernaryExpr(this);
-			else return visitor.visitChildren(this);
-		}
-	}
-	public static class InnerExprContext extends ExprContext {
-		public ExprContext inner;
-		public ExprContext expr() {
-			return getRuleContext(ExprContext.class,0);
-		}
-		public InnerExprContext(ExprContext ctx) { copyFrom(ctx); }
-		@Override
-		public void enterRule(ParseTreeListener listener) {
-			if ( listener instanceof DataBinderListener ) ((DataBinderListener)listener).enterInnerExpr(this);
-		}
-		@Override
-		public void exitRule(ParseTreeListener listener) {
-			if ( listener instanceof DataBinderListener ) ((DataBinderListener)listener).exitInnerExpr(this);
-		}
-		@Override
-		public <Result> Result accept(ParseTreeVisitor<? extends Result> visitor) {
-			if ( visitor instanceof DataBinderVisitor<?> ) return ((DataBinderVisitor<? extends Result>)visitor).visitInnerExpr(this);
-			else return visitor.visitChildren(this);
-		}
-	}
-	public static class GlobalMethodCallExprContext extends ExprContext {
-		public Token methodName;
-		public ExprListContext arguments;
-		public ExprListContext exprList() {
-			return getRuleContext(ExprListContext.class,0);
-		}
-		public TerminalNode Identifier() { return getToken(DataBinderParser.Identifier, 0); }
-		public GlobalMethodCallExprContext(ExprContext ctx) { copyFrom(ctx); }
-		@Override
-		public void enterRule(ParseTreeListener listener) {
-			if ( listener instanceof DataBinderListener ) ((DataBinderListener)listener).enterGlobalMethodCallExpr(this);
-		}
-		@Override
-		public void exitRule(ParseTreeListener listener) {
-			if ( listener instanceof DataBinderListener ) ((DataBinderListener)listener).exitGlobalMethodCallExpr(this);
-		}
-		@Override
-		public <Result> Result accept(ParseTreeVisitor<? extends Result> visitor) {
-			if ( visitor instanceof DataBinderVisitor<?> ) return ((DataBinderVisitor<? extends Result>)visitor).visitGlobalMethodCallExpr(this);
-			else return visitor.visitChildren(this);
-		}
-	}
-	public static class MethodCallExprContext extends ExprContext {
-		public ExprContext ownerObj;
-		public Token methodName;
-		public ExprListContext arguments;
-		public ExprListContext exprList() {
-			return getRuleContext(ExprListContext.class,0);
-		}
-		public ExprContext expr() {
-			return getRuleContext(ExprContext.class,0);
-		}
-		public TerminalNode Identifier() { return getToken(DataBinderParser.Identifier, 0); }
-		public MethodCallExprContext(ExprContext ctx) { copyFrom(ctx); }
-		@Override
-		public void enterRule(ParseTreeListener listener) {
-			if ( listener instanceof DataBinderListener ) ((DataBinderListener)listener).enterMethodCallExpr(this);
-		}
-		@Override
-		public void exitRule(ParseTreeListener listener) {
-			if ( listener instanceof DataBinderListener ) ((DataBinderListener)listener).exitMethodCallExpr(this);
-		}
-		@Override
-		public <Result> Result accept(ParseTreeVisitor<? extends Result> visitor) {
-			if ( visitor instanceof DataBinderVisitor<?> ) return ((DataBinderVisitor<? extends Result>)visitor).visitMethodCallExpr(this);
-			else return visitor.visitChildren(this);
-		}
-	}
-	public static class EqExprContext extends ExprContext {
-		public ExprContext left;
-		public ExprContext right;
-		public List<? extends ExprContext> expr() {
-			return getRuleContexts(ExprContext.class);
-		}
-		public ExprContext expr(int i) {
-			return getRuleContext(ExprContext.class,i);
-		}
-		public EqExprContext(ExprContext ctx) { copyFrom(ctx); }
-		@Override
-		public void enterRule(ParseTreeListener listener) {
-			if ( listener instanceof DataBinderListener ) ((DataBinderListener)listener).enterEqExpr(this);
-		}
-		@Override
-		public void exitRule(ParseTreeListener listener) {
-			if ( listener instanceof DataBinderListener ) ((DataBinderListener)listener).exitEqExpr(this);
-		}
-		@Override
-		public <Result> Result accept(ParseTreeVisitor<? extends Result> visitor) {
-			if ( visitor instanceof DataBinderVisitor<?> ) return ((DataBinderVisitor<? extends Result>)visitor).visitEqExpr(this);
-			else return visitor.visitChildren(this);
-		}
-	}
-
-	@RuleVersion(0)
-	public final ExprContext expr() throws RecognitionException {
-		return expr(0);
-	}
-
-	private ExprContext expr(int _p) throws RecognitionException {
-		ParserRuleContext _parentctx = _ctx;
-		int _parentState = getState();
-		ExprContext _localctx = new ExprContext(_ctx, _parentState);
-		ExprContext _prevctx = _localctx;
-		int _startState = 2;
-		enterRecursionRule(_localctx, 2, RULE_expr, _p);
-		int _la;
-		try {
-			int _alt;
-			enterOuterAlt(_localctx, 1);
-			{
-			setState(31);
-			switch ( getInterpreter().adaptivePredict(_input,1,_ctx) ) {
-			case 1:
-				{
-				_localctx = new NilExprContext(_localctx);
-				_ctx = _localctx;
-				_prevctx = _localctx;
-
-				setState(17); nil();
-				}
-				break;
-
-			case 2:
-				{
-				_localctx = new InnerExprContext(_localctx);
-				_ctx = _localctx;
-				_prevctx = _localctx;
-				setState(18); match(T__4);
-				setState(19); ((InnerExprContext)_localctx).inner = expr(0);
-				setState(20); match(T__10);
-				}
-				break;
-
-			case 3:
-				{
-				_localctx = new GlobalMethodCallExprContext(_localctx);
-				_ctx = _localctx;
-				_prevctx = _localctx;
-				setState(22); ((GlobalMethodCallExprContext)_localctx).methodName = match(Identifier);
-				setState(23); match(T__4);
-				setState(25);
-				_la = _input.LA(1);
-				if ((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << T__11) | (1L << T__4) | (1L << Identifier) | (1L << INT) | (1L << BOOLEAN) | (1L << HackyStringLiteral) | (1L << StringLiteral) | (1L << CharacterLiteral))) != 0)) {
-					{
-					setState(24); ((GlobalMethodCallExprContext)_localctx).arguments = exprList();
-					}
-				}
-
-				setState(27); match(T__10);
-				}
-				break;
-
-			case 4:
-				{
-				_localctx = new HackyStringExprContext(_localctx);
-				_ctx = _localctx;
-				_prevctx = _localctx;
-				setState(28); ((HackyStringExprContext)_localctx).atomString = hackyStringSymbol();
-				}
-				break;
-
-			case 5:
-				{
-				_localctx = new AtomExprContext(_localctx);
-				_ctx = _localctx;
-				_prevctx = _localctx;
-				setState(29); ((AtomExprContext)_localctx).atom = symbol();
-				}
-				break;
-
-			case 6:
-				{
-				_localctx = new IdExprContext(_localctx);
-				_ctx = _localctx;
-				_prevctx = _localctx;
-				setState(30); field();
-				}
-				break;
-			}
-			_ctx.stop = _input.LT(-1);
-			setState(58);
-			_errHandler.sync(this);
-			_alt = getInterpreter().adaptivePredict(_input,4,_ctx);
-			while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) {
-				if ( _alt==1 ) {
-					if ( _parseListeners!=null ) triggerExitRuleEvent();
-					_prevctx = _localctx;
-					{
-					setState(56);
-					switch ( getInterpreter().adaptivePredict(_input,3,_ctx) ) {
-					case 1:
-						{
-						_localctx = new OpExprContext(new ExprContext(_parentctx, _parentState));
-						((OpExprContext)_localctx).left = _prevctx;
-						pushNewRecursionContext(_localctx, _startState, RULE_expr);
-						setState(33);
-						if (!(precpred(_ctx, 4))) throw new FailedPredicateException(this, "precpred(_ctx, 4)");
-						setState(34);
-						((OpExprContext)_localctx).op = _input.LT(1);
-						_la = _input.LA(1);
-						if ( !(_la==T__6 || _la==T__2) ) {
-							((OpExprContext)_localctx).op = _errHandler.recoverInline(this);
-						}
-						consume();
-						setState(35); ((OpExprContext)_localctx).right = expr(5);
-						}
-						break;
-
-					case 2:
-						{
-						_localctx = new OpExprContext(new ExprContext(_parentctx, _parentState));
-						((OpExprContext)_localctx).left = _prevctx;
-						pushNewRecursionContext(_localctx, _startState, RULE_expr);
-						setState(36);
-						if (!(precpred(_ctx, 3))) throw new FailedPredicateException(this, "precpred(_ctx, 3)");
-						setState(37);
-						((OpExprContext)_localctx).op = _input.LT(1);
-						_la = _input.LA(1);
-						if ( !(_la==T__7 || _la==T__5) ) {
-							((OpExprContext)_localctx).op = _errHandler.recoverInline(this);
-						}
-						consume();
-						setState(38); ((OpExprContext)_localctx).right = expr(4);
-						}
-						break;
-
-					case 3:
-						{
-						_localctx = new EqExprContext(new ExprContext(_parentctx, _parentState));
-						((EqExprContext)_localctx).left = _prevctx;
-						pushNewRecursionContext(_localctx, _startState, RULE_expr);
-						setState(39);
-						if (!(precpred(_ctx, 2))) throw new FailedPredicateException(this, "precpred(_ctx, 2)");
-						setState(40); match(T__1);
-						setState(41); ((EqExprContext)_localctx).right = expr(3);
-						}
-						break;
-
-					case 4:
-						{
-						_localctx = new TernaryExprContext(new ExprContext(_parentctx, _parentState));
-						((TernaryExprContext)_localctx).pred = _prevctx;
-						pushNewRecursionContext(_localctx, _startState, RULE_expr);
-						setState(42);
-						if (!(precpred(_ctx, 1))) throw new FailedPredicateException(this, "precpred(_ctx, 1)");
-						setState(43); match(T__0);
-						setState(44); ((TernaryExprContext)_localctx).t = expr(0);
-						setState(45); match(T__3);
-						setState(46); ((TernaryExprContext)_localctx).f = expr(2);
-						}
-						break;
-
-					case 5:
-						{
-						_localctx = new MethodCallExprContext(new ExprContext(_parentctx, _parentState));
-						((MethodCallExprContext)_localctx).ownerObj = _prevctx;
-						pushNewRecursionContext(_localctx, _startState, RULE_expr);
-						setState(48);
-						if (!(precpred(_ctx, 9))) throw new FailedPredicateException(this, "precpred(_ctx, 9)");
-						setState(49); match(T__9);
-						setState(50); ((MethodCallExprContext)_localctx).methodName = match(Identifier);
-						setState(51); match(T__4);
-						setState(53);
-						_la = _input.LA(1);
-						if ((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << T__11) | (1L << T__4) | (1L << Identifier) | (1L << INT) | (1L << BOOLEAN) | (1L << HackyStringLiteral) | (1L << StringLiteral) | (1L << CharacterLiteral))) != 0)) {
-							{
-							setState(52); ((MethodCallExprContext)_localctx).arguments = exprList();
-							}
-						}
-
-						setState(55); match(T__10);
-						}
-						break;
-					}
-					} 
-				}
-				setState(60);
-				_errHandler.sync(this);
-				_alt = getInterpreter().adaptivePredict(_input,4,_ctx);
-			}
-			}
-		}
-		catch (RecognitionException re) {
-			_localctx.exception = re;
-			_errHandler.reportError(this, re);
-			_errHandler.recover(this, re);
-		}
-		finally {
-			unrollRecursionContexts(_parentctx);
-		}
-		return _localctx;
-	}
-
-	public static class ExprListContext extends ParserRuleContext {
-		public List<? extends ExprContext> expr() {
-			return getRuleContexts(ExprContext.class);
-		}
-		public ExprContext expr(int i) {
-			return getRuleContext(ExprContext.class,i);
-		}
-		public ExprListContext(ParserRuleContext parent, int invokingState) {
-			super(parent, invokingState);
-		}
-		@Override public int getRuleIndex() { return RULE_exprList; }
-		@Override
-		public void enterRule(ParseTreeListener listener) {
-			if ( listener instanceof DataBinderListener ) ((DataBinderListener)listener).enterExprList(this);
-		}
-		@Override
-		public void exitRule(ParseTreeListener listener) {
-			if ( listener instanceof DataBinderListener ) ((DataBinderListener)listener).exitExprList(this);
-		}
-		@Override
-		public <Result> Result accept(ParseTreeVisitor<? extends Result> visitor) {
-			if ( visitor instanceof DataBinderVisitor<?> ) return ((DataBinderVisitor<? extends Result>)visitor).visitExprList(this);
-			else return visitor.visitChildren(this);
-		}
-	}
-
-	@RuleVersion(0)
-	public final ExprListContext exprList() throws RecognitionException {
-		ExprListContext _localctx = new ExprListContext(_ctx, getState());
-		enterRule(_localctx, 4, RULE_exprList);
-		int _la;
-		try {
-			enterOuterAlt(_localctx, 1);
-			{
-			setState(61); expr(0);
-			setState(66);
-			_errHandler.sync(this);
-			_la = _input.LA(1);
-			while (_la==T__8) {
-				{
-				{
-				setState(62); match(T__8);
-				setState(63); expr(0);
-				}
-				}
-				setState(68);
-				_errHandler.sync(this);
-				_la = _input.LA(1);
-			}
-			}
-		}
-		catch (RecognitionException re) {
-			_localctx.exception = re;
-			_errHandler.reportError(this, re);
-			_errHandler.recover(this, re);
-		}
-		finally {
-			exitRule();
-		}
-		return _localctx;
-	}
-
-	public static class FieldContext extends ParserRuleContext {
-		public Token name;
-		public TerminalNode Identifier(int i) {
-			return getToken(DataBinderParser.Identifier, i);
-		}
-		public List<? extends TerminalNode> Identifier() { return getTokens(DataBinderParser.Identifier); }
-		public FieldContext(ParserRuleContext parent, int invokingState) {
-			super(parent, invokingState);
-		}
-		@Override public int getRuleIndex() { return RULE_field; }
-		@Override
-		public void enterRule(ParseTreeListener listener) {
-			if ( listener instanceof DataBinderListener ) ((DataBinderListener)listener).enterField(this);
-		}
-		@Override
-		public void exitRule(ParseTreeListener listener) {
-			if ( listener instanceof DataBinderListener ) ((DataBinderListener)listener).exitField(this);
-		}
-		@Override
-		public <Result> Result accept(ParseTreeVisitor<? extends Result> visitor) {
-			if ( visitor instanceof DataBinderVisitor<?> ) return ((DataBinderVisitor<? extends Result>)visitor).visitField(this);
-			else return visitor.visitChildren(this);
-		}
-	}
-
-	@RuleVersion(0)
-	public final FieldContext field() throws RecognitionException {
-		FieldContext _localctx = new FieldContext(_ctx, getState());
-		enterRule(_localctx, 6, RULE_field);
-		try {
-			int _alt;
-			enterOuterAlt(_localctx, 1);
-			{
-			setState(69); _localctx.name = match(Identifier);
-			setState(74);
-			_errHandler.sync(this);
-			_alt = getInterpreter().adaptivePredict(_input,6,_ctx);
-			while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) {
-				if ( _alt==1 ) {
-					{
-					{
-					setState(70); match(T__9);
-					setState(71); match(Identifier);
-					}
-					} 
-				}
-				setState(76);
-				_errHandler.sync(this);
-				_alt = getInterpreter().adaptivePredict(_input,6,_ctx);
-			}
-			}
-		}
-		catch (RecognitionException re) {
-			_localctx.exception = re;
-			_errHandler.reportError(this, re);
-			_errHandler.recover(this, re);
-		}
-		finally {
-			exitRule();
-		}
-		return _localctx;
-	}
-
-	public static class HackyStringSymbolContext extends ParserRuleContext {
-		public TerminalNode HackyStringLiteral() { return getToken(DataBinderParser.HackyStringLiteral, 0); }
-		public HackyStringSymbolContext(ParserRuleContext parent, int invokingState) {
-			super(parent, invokingState);
-		}
-		@Override public int getRuleIndex() { return RULE_hackyStringSymbol; }
-		@Override
-		public void enterRule(ParseTreeListener listener) {
-			if ( listener instanceof DataBinderListener ) ((DataBinderListener)listener).enterHackyStringSymbol(this);
-		}
-		@Override
-		public void exitRule(ParseTreeListener listener) {
-			if ( listener instanceof DataBinderListener ) ((DataBinderListener)listener).exitHackyStringSymbol(this);
-		}
-		@Override
-		public <Result> Result accept(ParseTreeVisitor<? extends Result> visitor) {
-			if ( visitor instanceof DataBinderVisitor<?> ) return ((DataBinderVisitor<? extends Result>)visitor).visitHackyStringSymbol(this);
-			else return visitor.visitChildren(this);
-		}
-	}
-
-	@RuleVersion(0)
-	public final HackyStringSymbolContext hackyStringSymbol() throws RecognitionException {
-		HackyStringSymbolContext _localctx = new HackyStringSymbolContext(_ctx, getState());
-		enterRule(_localctx, 8, RULE_hackyStringSymbol);
-		try {
-			enterOuterAlt(_localctx, 1);
-			{
-			setState(77); match(HackyStringLiteral);
-			}
-		}
-		catch (RecognitionException re) {
-			_localctx.exception = re;
-			_errHandler.reportError(this, re);
-			_errHandler.recover(this, re);
-		}
-		finally {
-			exitRule();
-		}
-		return _localctx;
-	}
-
-	public static class SymbolContext extends ParserRuleContext {
-		public TerminalNode BOOLEAN() { return getToken(DataBinderParser.BOOLEAN, 0); }
-		public TerminalNode INT() { return getToken(DataBinderParser.INT, 0); }
-		public TerminalNode CharacterLiteral() { return getToken(DataBinderParser.CharacterLiteral, 0); }
-		public TerminalNode StringLiteral() { return getToken(DataBinderParser.StringLiteral, 0); }
-		public SymbolContext(ParserRuleContext parent, int invokingState) {
-			super(parent, invokingState);
-		}
-		@Override public int getRuleIndex() { return RULE_symbol; }
-		@Override
-		public void enterRule(ParseTreeListener listener) {
-			if ( listener instanceof DataBinderListener ) ((DataBinderListener)listener).enterSymbol(this);
-		}
-		@Override
-		public void exitRule(ParseTreeListener listener) {
-			if ( listener instanceof DataBinderListener ) ((DataBinderListener)listener).exitSymbol(this);
-		}
-		@Override
-		public <Result> Result accept(ParseTreeVisitor<? extends Result> visitor) {
-			if ( visitor instanceof DataBinderVisitor<?> ) return ((DataBinderVisitor<? extends Result>)visitor).visitSymbol(this);
-			else return visitor.visitChildren(this);
-		}
-	}
-
-	@RuleVersion(0)
-	public final SymbolContext symbol() throws RecognitionException {
-		SymbolContext _localctx = new SymbolContext(_ctx, getState());
-		enterRule(_localctx, 10, RULE_symbol);
-		int _la;
-		try {
-			enterOuterAlt(_localctx, 1);
-			{
-			setState(79);
-			_la = _input.LA(1);
-			if ( !((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << INT) | (1L << BOOLEAN) | (1L << StringLiteral) | (1L << CharacterLiteral))) != 0)) ) {
-			_errHandler.recoverInline(this);
-			}
-			consume();
-			}
-		}
-		catch (RecognitionException re) {
-			_localctx.exception = re;
-			_errHandler.reportError(this, re);
-			_errHandler.recover(this, re);
-		}
-		finally {
-			exitRule();
-		}
-		return _localctx;
-	}
-
-	public static class NilContext extends ParserRuleContext {
-		public NilContext(ParserRuleContext parent, int invokingState) {
-			super(parent, invokingState);
-		}
-		@Override public int getRuleIndex() { return RULE_nil; }
-		@Override
-		public void enterRule(ParseTreeListener listener) {
-			if ( listener instanceof DataBinderListener ) ((DataBinderListener)listener).enterNil(this);
-		}
-		@Override
-		public void exitRule(ParseTreeListener listener) {
-			if ( listener instanceof DataBinderListener ) ((DataBinderListener)listener).exitNil(this);
-		}
-		@Override
-		public <Result> Result accept(ParseTreeVisitor<? extends Result> visitor) {
-			if ( visitor instanceof DataBinderVisitor<?> ) return ((DataBinderVisitor<? extends Result>)visitor).visitNil(this);
-			else return visitor.visitChildren(this);
-		}
-	}
-
-	@RuleVersion(0)
-	public final NilContext nil() throws RecognitionException {
-		NilContext _localctx = new NilContext(_ctx, getState());
-		enterRule(_localctx, 12, RULE_nil);
-		try {
-			enterOuterAlt(_localctx, 1);
-			{
-			setState(81); match(T__11);
-			}
-		}
-		catch (RecognitionException re) {
-			_localctx.exception = re;
-			_errHandler.reportError(this, re);
-			_errHandler.recover(this, re);
-		}
-		finally {
-			exitRule();
-		}
-		return _localctx;
-	}
-
-	public boolean sempred(RuleContext _localctx, int ruleIndex, int predIndex) {
-		switch (ruleIndex) {
-		case 1: return expr_sempred((ExprContext)_localctx, predIndex);
-		}
-		return true;
-	}
-	private boolean expr_sempred(ExprContext _localctx, int predIndex) {
-		switch (predIndex) {
-		case 0: return precpred(_ctx, 4);
-
-		case 1: return precpred(_ctx, 3);
-
-		case 2: return precpred(_ctx, 2);
-
-		case 3: return precpred(_ctx, 1);
-
-		case 4: return precpred(_ctx, 9);
-		}
-		return true;
-	}
-
-	public static final String _serializedATN =
-		"\3\uaf6f\u8320\u479d\ub75c\u4880\u1605\u191c\uab37\3\25V\4\2\t\2\4\3\t"+
-		"\3\4\4\t\4\4\5\t\5\4\6\t\6\4\7\t\7\4\b\t\b\3\2\3\2\3\3\3\3\3\3\3\3\3\3"+
-		"\3\3\3\3\3\3\3\3\5\3\34\n\3\3\3\3\3\3\3\3\3\5\3\"\n\3\3\3\3\3\3\3\3\3"+
-		"\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\5\38"+
-		"\n\3\3\3\7\3;\n\3\f\3\16\3>\13\3\3\4\3\4\3\4\7\4C\n\4\f\4\16\4F\13\4\3"+
-		"\5\3\5\3\5\7\5K\n\5\f\5\16\5N\13\5\3\6\3\6\3\7\3\7\3\b\3\b\3\b\2\2\3\4"+
-		"\t\2\2\4\2\6\2\b\2\n\2\f\2\16\2\2\5\4\2\b\b\f\f\4\2\7\7\t\t\4\2\20\21"+
-		"\23\24\\\2\20\3\2\2\2\4!\3\2\2\2\6?\3\2\2\2\bG\3\2\2\2\nO\3\2\2\2\fQ\3"+
-		"\2\2\2\16S\3\2\2\2\20\21\5\4\3\2\21\3\3\2\2\2\22\23\b\3\1\2\23\"\5\16"+
-		"\b\2\24\25\7\n\2\2\25\26\5\4\3\2\26\27\7\4\2\2\27\"\3\2\2\2\30\31\7\17"+
-		"\2\2\31\33\7\n\2\2\32\34\5\6\4\2\33\32\3\2\2\2\33\34\3\2\2\2\34\35\3\2"+
-		"\2\2\35\"\7\4\2\2\36\"\5\n\6\2\37\"\5\f\7\2 \"\5\b\5\2!\22\3\2\2\2!\24"+
-		"\3\2\2\2!\30\3\2\2\2!\36\3\2\2\2!\37\3\2\2\2! \3\2\2\2\"<\3\2\2\2#$\f"+
-		"\6\2\2$%\t\2\2\2%;\5\4\3\7&\'\f\5\2\2\'(\t\3\2\2(;\5\4\3\6)*\f\4\2\2*"+
-		"+\7\r\2\2+;\5\4\3\5,-\f\3\2\2-.\7\16\2\2./\5\4\3\2/\60\7\13\2\2\60\61"+
-		"\5\4\3\4\61;\3\2\2\2\62\63\f\13\2\2\63\64\7\5\2\2\64\65\7\17\2\2\65\67"+
-		"\7\n\2\2\668\5\6\4\2\67\66\3\2\2\2\678\3\2\2\289\3\2\2\29;\7\4\2\2:#\3"+
-		"\2\2\2:&\3\2\2\2:)\3\2\2\2:,\3\2\2\2:\62\3\2\2\2;>\3\2\2\2<:\3\2\2\2<"+
-		"=\3\2\2\2=\5\3\2\2\2><\3\2\2\2?D\5\4\3\2@A\7\6\2\2AC\5\4\3\2B@\3\2\2\2"+
-		"CF\3\2\2\2DB\3\2\2\2DE\3\2\2\2E\7\3\2\2\2FD\3\2\2\2GL\7\17\2\2HI\7\5\2"+
-		"\2IK\7\17\2\2JH\3\2\2\2KN\3\2\2\2LJ\3\2\2\2LM\3\2\2\2M\t\3\2\2\2NL\3\2"+
-		"\2\2OP\7\22\2\2P\13\3\2\2\2QR\t\4\2\2R\r\3\2\2\2ST\7\3\2\2T\17\3\2\2\2"+
-		"\t\33!\67:<DL";
-	public static final ATN _ATN =
-		new ATNDeserializer().deserialize(_serializedATN.toCharArray());
-	static {
-	}
-}
\ No newline at end of file
diff --git a/grammarBuilder/src/main/java-gen/com/android/databinding/DataBinderVisitor.java b/grammarBuilder/src/main/java-gen/com/android/databinding/DataBinderVisitor.java
deleted file mode 100644
index c4a3980..0000000
--- a/grammarBuilder/src/main/java-gen/com/android/databinding/DataBinderVisitor.java
+++ /dev/null
@@ -1,159 +0,0 @@
-/*
- * Copyright (C) 2014 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.
- */
-
-// Generated from DataBinder.g4 by ANTLR 4.4
-package com.android.databinding;
-import org.antlr.v4.runtime.Token;
-import org.antlr.v4.runtime.misc.NotNull;
-import org.antlr.v4.runtime.tree.ParseTreeVisitor;
-
-/**
- * This interface defines a complete generic visitor for a parse tree produced
- * by {@link DataBinderParser}.
- *
- * @param <Result> The return type of the visit operation. Use {@link Void} for
- * operations with no return type.
- */
-public interface DataBinderVisitor<Result> extends ParseTreeVisitor<Result> {
-	/**
-	 * Visit a parse tree produced by {@link DataBinderParser#symbol}.
-	 * @param ctx the parse tree
-	 * @return the visitor result
-	 */
-	Result visitSymbol(@NotNull DataBinderParser.SymbolContext ctx);
-
-	/**
-	 * Visit a parse tree produced by the {@code idExpr}
-	 * labeled alternative in {@link DataBinderParser#expr}.
-	 * @param ctx the parse tree
-	 * @return the visitor result
-	 */
-	Result visitIdExpr(@NotNull DataBinderParser.IdExprContext ctx);
-
-	/**
-	 * Visit a parse tree produced by the {@code atomExpr}
-	 * labeled alternative in {@link DataBinderParser#expr}.
-	 * @param ctx the parse tree
-	 * @return the visitor result
-	 */
-	Result visitAtomExpr(@NotNull DataBinderParser.AtomExprContext ctx);
-
-	/**
-	 * Visit a parse tree produced by {@link DataBinderParser#expr}.
-	 * @param ctx the parse tree
-	 * @return the visitor result
-	 */
-	Result visitExpr(@NotNull DataBinderParser.ExprContext ctx);
-
-	/**
-	 * Visit a parse tree produced by the {@code ternaryExpr}
-	 * labeled alternative in {@link DataBinderParser#expr}.
-	 * @param ctx the parse tree
-	 * @return the visitor result
-	 */
-	Result visitTernaryExpr(@NotNull DataBinderParser.TernaryExprContext ctx);
-
-	/**
-	 * Visit a parse tree produced by the {@code globalMethodCallExpr}
-	 * labeled alternative in {@link DataBinderParser#expr}.
-	 * @param ctx the parse tree
-	 * @return the visitor result
-	 */
-	Result visitGlobalMethodCallExpr(@NotNull DataBinderParser.GlobalMethodCallExprContext ctx);
-
-	/**
-	 * Visit a parse tree produced by the {@code innerExpr}
-	 * labeled alternative in {@link DataBinderParser#expr}.
-	 * @param ctx the parse tree
-	 * @return the visitor result
-	 */
-	Result visitInnerExpr(@NotNull DataBinderParser.InnerExprContext ctx);
-
-	/**
-	 * Visit a parse tree produced by {@link DataBinderParser#field}.
-	 * @param ctx the parse tree
-	 * @return the visitor result
-	 */
-	Result visitField(@NotNull DataBinderParser.FieldContext ctx);
-
-	/**
-	 * Visit a parse tree produced by the {@code opExpr}
-	 * labeled alternative in {@link DataBinderParser#expr}.
-	 * @param ctx the parse tree
-	 * @return the visitor result
-	 */
-	Result visitOpExpr(@NotNull DataBinderParser.OpExprContext ctx);
-
-	/**
-	 * Visit a parse tree produced by the {@code nilExpr}
-	 * labeled alternative in {@link DataBinderParser#expr}.
-	 * @param ctx the parse tree
-	 * @return the visitor result
-	 */
-	Result visitNilExpr(@NotNull DataBinderParser.NilExprContext ctx);
-
-	/**
-	 * Visit a parse tree produced by {@link DataBinderParser#start}.
-	 * @param ctx the parse tree
-	 * @return the visitor result
-	 */
-	Result visitStart(@NotNull DataBinderParser.StartContext ctx);
-
-	/**
-	 * Visit a parse tree produced by {@link DataBinderParser#hackyStringSymbol}.
-	 * @param ctx the parse tree
-	 * @return the visitor result
-	 */
-	Result visitHackyStringSymbol(@NotNull DataBinderParser.HackyStringSymbolContext ctx);
-
-	/**
-	 * Visit a parse tree produced by the {@code hackyStringExpr}
-	 * labeled alternative in {@link DataBinderParser#expr}.
-	 * @param ctx the parse tree
-	 * @return the visitor result
-	 */
-	Result visitHackyStringExpr(@NotNull DataBinderParser.HackyStringExprContext ctx);
-
-	/**
-	 * Visit a parse tree produced by the {@code methodCallExpr}
-	 * labeled alternative in {@link DataBinderParser#expr}.
-	 * @param ctx the parse tree
-	 * @return the visitor result
-	 */
-	Result visitMethodCallExpr(@NotNull DataBinderParser.MethodCallExprContext ctx);
-
-	/**
-	 * Visit a parse tree produced by the {@code eqExpr}
-	 * labeled alternative in {@link DataBinderParser#expr}.
-	 * @param ctx the parse tree
-	 * @return the visitor result
-	 */
-	Result visitEqExpr(@NotNull DataBinderParser.EqExprContext ctx);
-
-	/**
-	 * Visit a parse tree produced by {@link DataBinderParser#nil}.
-	 * @param ctx the parse tree
-	 * @return the visitor result
-	 */
-	Result visitNil(@NotNull DataBinderParser.NilContext ctx);
-
-	/**
-	 * Visit a parse tree produced by {@link DataBinderParser#exprList}.
-	 * @param ctx the parse tree
-	 * @return the visitor result
-	 */
-	Result visitExprList(@NotNull DataBinderParser.ExprListContext ctx);
-}
\ No newline at end of file
diff --git a/grammarBuilder/src/test/java/com/android/databinding/BindingExpressionParserTest.java b/grammarBuilder/src/test/java/android/databinding/BindingExpressionParserTest.java
similarity index 91%
rename from grammarBuilder/src/test/java/com/android/databinding/BindingExpressionParserTest.java
rename to grammarBuilder/src/test/java/android/databinding/BindingExpressionParserTest.java
index 630d3e1..31f041f 100644
--- a/grammarBuilder/src/test/java/com/android/databinding/BindingExpressionParserTest.java
+++ b/grammarBuilder/src/test/java/android/databinding/BindingExpressionParserTest.java
@@ -1,23 +1,23 @@
-package com.android.databinding;
+package android.databinding;
 
-import com.android.databinding.BindingExpressionParser.AndOrOpContext;
-import com.android.databinding.BindingExpressionParser.BinaryOpContext;
-import com.android.databinding.BindingExpressionParser.BindingSyntaxContext;
-import com.android.databinding.BindingExpressionParser.BitShiftOpContext;
-import com.android.databinding.BindingExpressionParser.ComparisonOpContext;
-import com.android.databinding.BindingExpressionParser.DefaultsContext;
-import com.android.databinding.BindingExpressionParser.DotOpContext;
-import com.android.databinding.BindingExpressionParser.ExpressionContext;
-import com.android.databinding.BindingExpressionParser.GroupingContext;
-import com.android.databinding.BindingExpressionParser.LiteralContext;
-import com.android.databinding.BindingExpressionParser.MathOpContext;
-import com.android.databinding.BindingExpressionParser.PrimaryContext;
-import com.android.databinding.BindingExpressionParser.PrimitiveTypeContext;
-import com.android.databinding.BindingExpressionParser.QuestionQuestionOpContext;
-import com.android.databinding.BindingExpressionParser.ResourceContext;
-import com.android.databinding.BindingExpressionParser.StringLiteralContext;
-import com.android.databinding.BindingExpressionParser.TernaryOpContext;
-import com.android.databinding.BindingExpressionParser.UnaryOpContext;
+import android.databinding.BindingExpressionParser.AndOrOpContext;
+import android.databinding.BindingExpressionParser.BinaryOpContext;
+import android.databinding.BindingExpressionParser.BindingSyntaxContext;
+import android.databinding.BindingExpressionParser.BitShiftOpContext;
+import android.databinding.BindingExpressionParser.ComparisonOpContext;
+import android.databinding.BindingExpressionParser.DefaultsContext;
+import android.databinding.BindingExpressionParser.DotOpContext;
+import android.databinding.BindingExpressionParser.ExpressionContext;
+import android.databinding.BindingExpressionParser.GroupingContext;
+import android.databinding.BindingExpressionParser.LiteralContext;
+import android.databinding.BindingExpressionParser.MathOpContext;
+import android.databinding.BindingExpressionParser.PrimaryContext;
+import android.databinding.BindingExpressionParser.PrimitiveTypeContext;
+import android.databinding.BindingExpressionParser.QuestionQuestionOpContext;
+import android.databinding.BindingExpressionParser.ResourceContext;
+import android.databinding.BindingExpressionParser.StringLiteralContext;
+import android.databinding.BindingExpressionParser.TernaryOpContext;
+import android.databinding.BindingExpressionParser.UnaryOpContext;
 
 import org.antlr.v4.runtime.ANTLRInputStream;
 import org.antlr.v4.runtime.CommonTokenStream;
@@ -366,4 +366,4 @@
         BindingExpressionParser parser = new BindingExpressionParser(tokens);
         return parser.bindingSyntax();
     }
-}
\ No newline at end of file
+}
diff --git a/integration-tests/IndependentLibrary/app/src/androidTest/java/com/android/databinding/test/independentlibrary/ApplicationTest.java b/integration-tests/IndependentLibrary/app/src/androidTest/java/android/databinding/test/independentlibrary/ApplicationTest.java
similarity index 94%
rename from integration-tests/IndependentLibrary/app/src/androidTest/java/com/android/databinding/test/independentlibrary/ApplicationTest.java
rename to integration-tests/IndependentLibrary/app/src/androidTest/java/android/databinding/test/independentlibrary/ApplicationTest.java
index 0b267a3..a75974f 100644
--- a/integration-tests/IndependentLibrary/app/src/androidTest/java/com/android/databinding/test/independentlibrary/ApplicationTest.java
+++ b/integration-tests/IndependentLibrary/app/src/androidTest/java/android/databinding/test/independentlibrary/ApplicationTest.java
@@ -13,7 +13,7 @@
  * limitations under the License.
  */
 
-package com.android.databinding.test.independentlibrary;
+package android.databinding.test.independentlibrary;
 
 import android.app.Application;
 import android.test.ApplicationTestCase;
@@ -26,4 +26,4 @@
     public ApplicationTest() {
         super(Application.class);
     }
-}
\ No newline at end of file
+}
diff --git a/integration-tests/IndependentLibrary/app/src/androidTest/java/com/android/databinding/test/independentlibrary/LibraryActivityTest.java b/integration-tests/IndependentLibrary/app/src/androidTest/java/android/databinding/test/independentlibrary/LibraryActivityTest.java
similarity index 96%
rename from integration-tests/IndependentLibrary/app/src/androidTest/java/com/android/databinding/test/independentlibrary/LibraryActivityTest.java
rename to integration-tests/IndependentLibrary/app/src/androidTest/java/android/databinding/test/independentlibrary/LibraryActivityTest.java
index 939d1ba..2672186 100644
--- a/integration-tests/IndependentLibrary/app/src/androidTest/java/com/android/databinding/test/independentlibrary/LibraryActivityTest.java
+++ b/integration-tests/IndependentLibrary/app/src/androidTest/java/android/databinding/test/independentlibrary/LibraryActivityTest.java
@@ -14,7 +14,7 @@
  * limitations under the License.
  */
 
-package com.android.databinding.test.independentlibrary;
+package android.databinding.test.independentlibrary;
 
 import android.test.ActivityInstrumentationTestCase2;
 import android.view.View;
diff --git a/integration-tests/IndependentLibrary/app/src/main/AndroidManifest.xml b/integration-tests/IndependentLibrary/app/src/main/AndroidManifest.xml
index ff2388c..8b26ea7 100644
--- a/integration-tests/IndependentLibrary/app/src/main/AndroidManifest.xml
+++ b/integration-tests/IndependentLibrary/app/src/main/AndroidManifest.xml
@@ -14,7 +14,7 @@
   -->
 
 <manifest xmlns:android="http://schemas.android.com/apk/res/android"
-          package="com.android.databinding.test.independentlibrary">
+          package="android.databinding.test.independentlibrary">
 
     <application android:allowBackup="true"
                  android:label="@string/app_name">
diff --git a/integration-tests/IndependentLibrary/app/src/main/java/com/android/databinding/test/independentlibrary/LibraryActivity.java b/integration-tests/IndependentLibrary/app/src/main/java/android/databinding/test/independentlibrary/LibraryActivity.java
similarity index 84%
rename from integration-tests/IndependentLibrary/app/src/main/java/com/android/databinding/test/independentlibrary/LibraryActivity.java
rename to integration-tests/IndependentLibrary/app/src/main/java/android/databinding/test/independentlibrary/LibraryActivity.java
index 2d2e024..52962d1 100644
--- a/integration-tests/IndependentLibrary/app/src/main/java/com/android/databinding/test/independentlibrary/LibraryActivity.java
+++ b/integration-tests/IndependentLibrary/app/src/main/java/android/databinding/test/independentlibrary/LibraryActivity.java
@@ -14,13 +14,13 @@
  * limitations under the License.
  */
 
-package com.android.databinding.test.independentlibrary;
+package android.databinding.test.independentlibrary;
 
 import android.app.Activity;
 import android.os.Bundle;
 
-import com.android.databinding.test.independentlibrary.vo.MyBindableObject;
-import com.android.databinding.test.independentlibrary.generated.LibraryLayoutBinding;
+import android.databinding.test.independentlibrary.vo.MyBindableObject;
+import android.databinding.test.independentlibrary.generated.LibraryLayoutBinding;
 public class LibraryActivity extends Activity {
     public static final String FIELD_VALUE = "BAR";
     @Override
diff --git a/integration-tests/IndependentLibrary/app/src/main/java/com/android/databinding/test/independentlibrary/LibraryAdapter.java b/integration-tests/IndependentLibrary/app/src/main/java/android/databinding/test/independentlibrary/LibraryAdapter.java
similarity index 89%
rename from integration-tests/IndependentLibrary/app/src/main/java/com/android/databinding/test/independentlibrary/LibraryAdapter.java
rename to integration-tests/IndependentLibrary/app/src/main/java/android/databinding/test/independentlibrary/LibraryAdapter.java
index e7a2ea6..e358e62 100644
--- a/integration-tests/IndependentLibrary/app/src/main/java/com/android/databinding/test/independentlibrary/LibraryAdapter.java
+++ b/integration-tests/IndependentLibrary/app/src/main/java/android/databinding/test/independentlibrary/LibraryAdapter.java
@@ -13,9 +13,9 @@
  * limitations under the License.
  */
 
-package com.android.databinding.test.independentlibrary;
+package android.databinding.test.independentlibrary;
 
-import android.binding.BindingAdapter;
+import android.databinding.BindingAdapter;
 import android.view.View;
 
 public class LibraryAdapter {
diff --git a/integration-tests/IndependentLibrary/app/src/main/java/com/android/databinding/test/independentlibrary/vo/MyBindableObject.java b/integration-tests/IndependentLibrary/app/src/main/java/android/databinding/test/independentlibrary/vo/MyBindableObject.java
similarity index 81%
rename from integration-tests/IndependentLibrary/app/src/main/java/com/android/databinding/test/independentlibrary/vo/MyBindableObject.java
rename to integration-tests/IndependentLibrary/app/src/main/java/android/databinding/test/independentlibrary/vo/MyBindableObject.java
index c4c5cc8..da66cef 100644
--- a/integration-tests/IndependentLibrary/app/src/main/java/com/android/databinding/test/independentlibrary/vo/MyBindableObject.java
+++ b/integration-tests/IndependentLibrary/app/src/main/java/android/databinding/test/independentlibrary/vo/MyBindableObject.java
@@ -14,12 +14,12 @@
  * limitations under the License.
  */
 
-package com.android.databinding.test.independentlibrary.vo;
+package android.databinding.test.independentlibrary.vo;
 
-import com.android.databinding.library.BaseObservable;
-import com.android.databinding.test.independentlibrary.BR;
+import android.databinding.BaseObservable;
+import android.databinding.test.independentlibrary.BR;
 
-import android.binding.Bindable;
+import android.databinding.Bindable;
 
 public class MyBindableObject extends BaseObservable {
     @Bindable
diff --git a/integration-tests/IndependentLibrary/app/src/main/res/layout/library_layout.xml b/integration-tests/IndependentLibrary/app/src/main/res/layout/library_layout.xml
index a7ba285..4262eb3 100644
--- a/integration-tests/IndependentLibrary/app/src/main/res/layout/library_layout.xml
+++ b/integration-tests/IndependentLibrary/app/src/main/res/layout/library_layout.xml
@@ -18,8 +18,8 @@
               android:orientation="vertical"
               android:layout_width="match_parent"
               android:layout_height="match_parent">
-    <variable name="foo" type="com.android.databinding.test.independentlibrary.vo.MyBindableObject"/>
+    <variable name="foo" type="android.databinding.test.independentlibrary.vo.MyBindableObject"/>
     <TextView android:layout_width="wrap_content" android:layout_height="wrap_content"
         android:id="@+id/fooTextView"
             android:text='@{foo.field +  " " + foo.field}'/>
-</LinearLayout>
\ No newline at end of file
+</LinearLayout>
diff --git a/integration-tests/MultiModuleTestApp/app/src/androidTest/java/com/android/databinding/multimoduletestapp/ApplicationTest.java b/integration-tests/MultiModuleTestApp/app/src/androidTest/java/com/android/databinding/multimoduletestapp/ApplicationTest.java
index f179748..b181322 100644
--- a/integration-tests/MultiModuleTestApp/app/src/androidTest/java/com/android/databinding/multimoduletestapp/ApplicationTest.java
+++ b/integration-tests/MultiModuleTestApp/app/src/androidTest/java/com/android/databinding/multimoduletestapp/ApplicationTest.java
@@ -14,9 +14,9 @@
  * limitations under the License.
  */
 
-package com.android.databinding.multimoduletestapp;
+package android.databinding.multimoduletestapp;
 
-import com.android.databinding.testlibrary.ObservableInLibrary;
+import android.databinding.testlibrary.ObservableInLibrary;
 
 import android.app.Application;
 import android.binding.Observable;
@@ -35,4 +35,4 @@
     public ApplicationTest() {
         super(Application.class);
     }
-}
\ No newline at end of file
+}
diff --git a/integration-tests/MultiModuleTestApp/app/src/androidTest/java/com/android/databinding/multimoduletestapp/EventIdsTest.java b/integration-tests/MultiModuleTestApp/app/src/androidTest/java/com/android/databinding/multimoduletestapp/EventIdsTest.java
index 32dbffe..57c66d5 100644
--- a/integration-tests/MultiModuleTestApp/app/src/androidTest/java/com/android/databinding/multimoduletestapp/EventIdsTest.java
+++ b/integration-tests/MultiModuleTestApp/app/src/androidTest/java/com/android/databinding/multimoduletestapp/EventIdsTest.java
@@ -14,9 +14,9 @@
  * limitations under the License.
  */
 
-package com.android.databinding.multimoduletestapp;
+package android.databinding.multimoduletestapp;
 
-import com.android.databinding.testlibrary.ObservableInLibrary;
+import android.databinding.testlibrary.ObservableInLibrary;
 
 import android.binding.Observable;
 import android.binding.OnPropertyChangedListener;
@@ -26,7 +26,7 @@
 import java.util.HashMap;
 import java.util.Map;
 
-import com.android.databinding.multimoduletestapp.BR;
+import android.databinding.multimoduletestapp.BR;
 
 public class EventIdsTest extends AndroidTestCase {
     public void testLibraryObservable() {
diff --git a/integration-tests/MultiModuleTestApp/app/src/main/AndroidManifest.xml b/integration-tests/MultiModuleTestApp/app/src/main/AndroidManifest.xml
index aaa0719..7e1cb9b 100644
--- a/integration-tests/MultiModuleTestApp/app/src/main/AndroidManifest.xml
+++ b/integration-tests/MultiModuleTestApp/app/src/main/AndroidManifest.xml
@@ -16,7 +16,7 @@
   -->
 
 <manifest xmlns:android="http://schemas.android.com/apk/res/android"
-    package="com.android.databinding.multimoduletestapp" >
+    package="android.databinding.multimoduletestapp" >
 
     <application
         android:allowBackup="true"
diff --git a/integration-tests/MultiModuleTestApp/app/src/main/java/com/android/databinding/multimoduletestapp/MainActivity.java b/integration-tests/MultiModuleTestApp/app/src/main/java/com/android/databinding/multimoduletestapp/MainActivity.java
index f8a012a..e6732c3 100644
--- a/integration-tests/MultiModuleTestApp/app/src/main/java/com/android/databinding/multimoduletestapp/MainActivity.java
+++ b/integration-tests/MultiModuleTestApp/app/src/main/java/com/android/databinding/multimoduletestapp/MainActivity.java
@@ -14,9 +14,9 @@
  * limitations under the License.
  */
 
-package com.android.databinding.multimoduletestapp;
+package android.databinding.multimoduletestapp;
 
-import com.android.databinding.multimoduletestapp.generated.ActivityMainBinding;
+import android.databinding.multimoduletestapp.generated.ActivityMainBinding;
 import android.app.Activity;
 import android.os.Bundle;
 import android.view.Menu;
diff --git a/integration-tests/MultiModuleTestApp/app/src/main/java/com/android/databinding/multimoduletestapp/ObservableExtendingLib.java b/integration-tests/MultiModuleTestApp/app/src/main/java/com/android/databinding/multimoduletestapp/ObservableExtendingLib.java
index b558790..cec626d 100644
--- a/integration-tests/MultiModuleTestApp/app/src/main/java/com/android/databinding/multimoduletestapp/ObservableExtendingLib.java
+++ b/integration-tests/MultiModuleTestApp/app/src/main/java/com/android/databinding/multimoduletestapp/ObservableExtendingLib.java
@@ -14,12 +14,12 @@
  * limitations under the License.
  */
 
-package com.android.databinding.multimoduletestapp;
+package android.databinding.multimoduletestapp;
 
-import com.android.databinding.testlibrary.ObservableInLibrary;
+import android.databinding.testlibrary.ObservableInLibrary;
 
 import android.binding.Bindable;
-import com.android.databinding.multimoduletestapp.BR;
+import android.databinding.multimoduletestapp.BR;
 
 public class ObservableExtendingLib extends ObservableInLibrary {
     @Bindable
diff --git a/integration-tests/MultiModuleTestApp/app/src/main/java/com/android/databinding/multimoduletestapp/ObservableInMainApp.java b/integration-tests/MultiModuleTestApp/app/src/main/java/com/android/databinding/multimoduletestapp/ObservableInMainApp.java
index c870fd4..b2319db 100644
--- a/integration-tests/MultiModuleTestApp/app/src/main/java/com/android/databinding/multimoduletestapp/ObservableInMainApp.java
+++ b/integration-tests/MultiModuleTestApp/app/src/main/java/com/android/databinding/multimoduletestapp/ObservableInMainApp.java
@@ -14,12 +14,12 @@
  * limitations under the License.
  */
 
-package com.android.databinding.multimoduletestapp;
+package android.databinding.multimoduletestapp;
 
 import android.binding.Bindable;
 
-import com.android.databinding.library.BaseObservable;
-import com.android.databinding.multimoduletestapp.BR;
+import android.databinding.library.BaseObservable;
+import android.databinding.multimoduletestapp.BR;
 
 public class ObservableInMainApp extends BaseObservable {
     @Bindable
diff --git a/integration-tests/MultiModuleTestApp/testlibrary/src/androidTest/java/com/android/databinding/testlibrary/ApplicationTest.java b/integration-tests/MultiModuleTestApp/testlibrary/src/androidTest/java/android/databinding/testlibrary/ApplicationTest.java
similarity index 95%
rename from integration-tests/MultiModuleTestApp/testlibrary/src/androidTest/java/com/android/databinding/testlibrary/ApplicationTest.java
rename to integration-tests/MultiModuleTestApp/testlibrary/src/androidTest/java/android/databinding/testlibrary/ApplicationTest.java
index 9efa645..49d1b7c 100644
--- a/integration-tests/MultiModuleTestApp/testlibrary/src/androidTest/java/com/android/databinding/testlibrary/ApplicationTest.java
+++ b/integration-tests/MultiModuleTestApp/testlibrary/src/androidTest/java/android/databinding/testlibrary/ApplicationTest.java
@@ -14,7 +14,7 @@
  * limitations under the License.
  */
 
-package com.android.databinding.testlibrary;
+package android.databinding.testlibrary;
 
 import android.app.Application;
 import android.test.ApplicationTestCase;
@@ -26,4 +26,4 @@
     public ApplicationTest() {
         super(Application.class);
     }
-}
\ No newline at end of file
+}
diff --git a/integration-tests/MultiModuleTestApp/testlibrary/src/main/AndroidManifest.xml b/integration-tests/MultiModuleTestApp/testlibrary/src/main/AndroidManifest.xml
deleted file mode 100644
index 263d663..0000000
--- a/integration-tests/MultiModuleTestApp/testlibrary/src/main/AndroidManifest.xml
+++ /dev/null
@@ -1,36 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
-  ~ Copyright (C) 2015 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.android.databinding.testlibrary" >
-
-    <application
-        android:allowBackup="true"
-        android:icon="@drawable/ic_launcher"
-        android:label="@string/app_name" >
-        <activity
-            android:name=".TestLibraryMainActivity"
-            android:label="@string/app_name" >
-            <intent-filter>
-                <action android:name="android.intent.action.MAIN" />
-
-                <category android:name="android.intent.category.LAUNCHER" />
-            </intent-filter>
-        </activity>
-    </application>
-
-</manifest>
diff --git a/integration-tests/MultiModuleTestApp/testlibrary/src/main/java/com/android/databinding/testlibrary/ObservableInLibrary.java b/integration-tests/MultiModuleTestApp/testlibrary/src/main/java/android/databinding/testlibrary/ObservableInLibrary.java
similarity index 90%
rename from integration-tests/MultiModuleTestApp/testlibrary/src/main/java/com/android/databinding/testlibrary/ObservableInLibrary.java
rename to integration-tests/MultiModuleTestApp/testlibrary/src/main/java/android/databinding/testlibrary/ObservableInLibrary.java
index f5470f1..2b0186e 100644
--- a/integration-tests/MultiModuleTestApp/testlibrary/src/main/java/com/android/databinding/testlibrary/ObservableInLibrary.java
+++ b/integration-tests/MultiModuleTestApp/testlibrary/src/main/java/android/databinding/testlibrary/ObservableInLibrary.java
@@ -14,12 +14,12 @@
  * limitations under the License.
  */
 
-package com.android.databinding.testlibrary;
+package android.databinding.testlibrary;
 
 import android.binding.Bindable;
 
-import com.android.databinding.library.BaseObservable;
-import com.android.databinding.testlibrary.BR;
+import android.databinding.library.BaseObservable;
+import android.databinding.testlibrary.BR;
 
 public class ObservableInLibrary extends BaseObservable {
 
diff --git a/integration-tests/MultiModuleTestApp/testlibrary/src/main/java/com/android/databinding/testlibrary/TestLibObject.java b/integration-tests/MultiModuleTestApp/testlibrary/src/main/java/android/databinding/testlibrary/TestLibObject.java
similarity index 94%
rename from integration-tests/MultiModuleTestApp/testlibrary/src/main/java/com/android/databinding/testlibrary/TestLibObject.java
rename to integration-tests/MultiModuleTestApp/testlibrary/src/main/java/android/databinding/testlibrary/TestLibObject.java
index 330b870..1a6e7de 100644
--- a/integration-tests/MultiModuleTestApp/testlibrary/src/main/java/com/android/databinding/testlibrary/TestLibObject.java
+++ b/integration-tests/MultiModuleTestApp/testlibrary/src/main/java/android/databinding/testlibrary/TestLibObject.java
@@ -14,7 +14,7 @@
  * limitations under the License.
  */
 
-package com.android.databinding.testlibrary;
+package android.databinding.testlibrary;
 
 import android.binding.Bindable;
 
diff --git a/integration-tests/MultiModuleTestApp/testlibrary/src/main/java/com/android/databinding/testlibrary/TestLibraryMainActivity.java b/integration-tests/MultiModuleTestApp/testlibrary/src/main/java/android/databinding/testlibrary/TestLibraryMainActivity.java
similarity index 90%
rename from integration-tests/MultiModuleTestApp/testlibrary/src/main/java/com/android/databinding/testlibrary/TestLibraryMainActivity.java
rename to integration-tests/MultiModuleTestApp/testlibrary/src/main/java/android/databinding/testlibrary/TestLibraryMainActivity.java
index 812b222..6ee0ecb 100644
--- a/integration-tests/MultiModuleTestApp/testlibrary/src/main/java/com/android/databinding/testlibrary/TestLibraryMainActivity.java
+++ b/integration-tests/MultiModuleTestApp/testlibrary/src/main/java/android/databinding/testlibrary/TestLibraryMainActivity.java
@@ -14,14 +14,14 @@
  * limitations under the License.
  */
 
-package com.android.databinding.testlibrary;
+package android.databinding.testlibrary;
 
 import android.app.Activity;
 import android.os.Bundle;
 import android.view.Menu;
 import android.view.MenuItem;
-import com.android.databinding.testlibrary.R;
-import com.android.databinding.testlibrary.generated.ActivityTestLibraryMainBinding;
+import android.databinding.testlibrary.R;
+import android.databinding.testlibrary.generated.ActivityTestLibraryMainBinding;
 public class TestLibraryMainActivity extends Activity {
     @Override
     protected void onCreate(Bundle savedInstanceState) {
diff --git a/integration-tests/MultiModuleTestApp/testlibrary/src/main/res/layout/activity_test_library_main.xml b/integration-tests/MultiModuleTestApp/testlibrary/src/main/res/layout/activity_test_library_main.xml
deleted file mode 100644
index b731cc0..0000000
--- a/integration-tests/MultiModuleTestApp/testlibrary/src/main/res/layout/activity_test_library_main.xml
+++ /dev/null
@@ -1,29 +0,0 @@
-<!--
-  ~ Copyright (C) 2015 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.
-  -->
-
-<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent"
-    android:layout_height="match_parent" android:paddingLeft="@dimen/activity_horizontal_margin"
-    android:paddingRight="@dimen/activity_horizontal_margin"
-    android:paddingTop="@dimen/activity_vertical_margin"
-    android:paddingBottom="@dimen/activity_vertical_margin"
-    tools:context=".TestLibraryMainActivity">
-    <variable name="obj1" type="com.android.databinding.testlibrary.TestLibObject"/>
-
-    <TextView android:text="@{obj1.field}" android:layout_width="wrap_content"
-        android:layout_height="wrap_content" />
-
-</RelativeLayout>
diff --git a/integration-tests/TestApp/app/src/androidTest/java/com/android/databinding/library/DataBinderTrojan.java b/integration-tests/TestApp/app/src/androidTest/java/android/databinding/library/DataBinderTrojan.java
similarity index 95%
rename from integration-tests/TestApp/app/src/androidTest/java/com/android/databinding/library/DataBinderTrojan.java
rename to integration-tests/TestApp/app/src/androidTest/java/android/databinding/library/DataBinderTrojan.java
index be95a0c..763f5a4 100644
--- a/integration-tests/TestApp/app/src/androidTest/java/com/android/databinding/library/DataBinderTrojan.java
+++ b/integration-tests/TestApp/app/src/androidTest/java/android/databinding/library/DataBinderTrojan.java
@@ -14,7 +14,7 @@
  * limitations under the License.
  */
 
-package com.android.databinding.library;
+package android.databinding;
 
 /**
  * This helper is used to toggle DataBinder's package private values to change behavior for testing
diff --git a/integration-tests/TestApp/app/src/androidTest/java/com/android/databinding/testapp/AbsListViewBindingAdapterTest.java b/integration-tests/TestApp/app/src/androidTest/java/android/databinding/testapp/AbsListViewBindingAdapterTest.java
similarity index 91%
rename from integration-tests/TestApp/app/src/androidTest/java/com/android/databinding/testapp/AbsListViewBindingAdapterTest.java
rename to integration-tests/TestApp/app/src/androidTest/java/android/databinding/testapp/AbsListViewBindingAdapterTest.java
index 1144dbc..4fd2a66 100644
--- a/integration-tests/TestApp/app/src/androidTest/java/com/android/databinding/testapp/AbsListViewBindingAdapterTest.java
+++ b/integration-tests/TestApp/app/src/androidTest/java/android/databinding/testapp/AbsListViewBindingAdapterTest.java
@@ -13,10 +13,10 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package com.android.databinding.testapp;
+package android.databinding.testapp;
 
-import com.android.databinding.testapp.generated.AbsListViewAdapterTestBinding;
-import com.android.databinding.testapp.vo.AbsListViewBindingObject;
+import android.databinding.testapp.generated.AbsListViewAdapterTestBinding;
+import android.databinding.testapp.vo.AbsListViewBindingObject;
 
 import android.graphics.drawable.ColorDrawable;
 import android.os.Build;
diff --git a/integration-tests/TestApp/app/src/androidTest/java/com/android/databinding/testapp/AbsSeekBarBindingAdapterTest.java b/integration-tests/TestApp/app/src/androidTest/java/android/databinding/testapp/AbsSeekBarBindingAdapterTest.java
similarity index 88%
rename from integration-tests/TestApp/app/src/androidTest/java/com/android/databinding/testapp/AbsSeekBarBindingAdapterTest.java
rename to integration-tests/TestApp/app/src/androidTest/java/android/databinding/testapp/AbsSeekBarBindingAdapterTest.java
index d3b2b98..0d133e3 100644
--- a/integration-tests/TestApp/app/src/androidTest/java/com/android/databinding/testapp/AbsSeekBarBindingAdapterTest.java
+++ b/integration-tests/TestApp/app/src/androidTest/java/android/databinding/testapp/AbsSeekBarBindingAdapterTest.java
@@ -13,10 +13,10 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package com.android.databinding.testapp;
+package android.databinding.testapp;
 
-import com.android.databinding.testapp.generated.AbsSeekBarAdapterTestBinding;
-import com.android.databinding.testapp.vo.AbsSeekBarBindingObject;
+import android.databinding.testapp.generated.AbsSeekBarAdapterTestBinding;
+import android.databinding.testapp.vo.AbsSeekBarBindingObject;
 
 import android.os.Build;
 import android.widget.SeekBar;
diff --git a/integration-tests/TestApp/app/src/androidTest/java/com/android/databinding/testapp/AbsSpinnerBindingAdapterTest.java b/integration-tests/TestApp/app/src/androidTest/java/android/databinding/testapp/AbsSpinnerBindingAdapterTest.java
similarity index 90%
rename from integration-tests/TestApp/app/src/androidTest/java/com/android/databinding/testapp/AbsSpinnerBindingAdapterTest.java
rename to integration-tests/TestApp/app/src/androidTest/java/android/databinding/testapp/AbsSpinnerBindingAdapterTest.java
index 7581794..ec55980 100644
--- a/integration-tests/TestApp/app/src/androidTest/java/com/android/databinding/testapp/AbsSpinnerBindingAdapterTest.java
+++ b/integration-tests/TestApp/app/src/androidTest/java/android/databinding/testapp/AbsSpinnerBindingAdapterTest.java
@@ -13,10 +13,10 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package com.android.databinding.testapp;
+package android.databinding.testapp;
 
-import com.android.databinding.testapp.generated.AbsSpinnerAdapterTestBinding;
-import com.android.databinding.testapp.vo.AbsSpinnerBindingObject;
+import android.databinding.testapp.generated.AbsSpinnerAdapterTestBinding;
+import android.databinding.testapp.vo.AbsSpinnerBindingObject;
 
 import android.os.Build;
 import android.widget.Spinner;
diff --git a/integration-tests/TestApp/app/src/androidTest/java/com/android/databinding/testapp/ApplicationTest.java b/integration-tests/TestApp/app/src/androidTest/java/android/databinding/testapp/ApplicationTest.java
similarity index 95%
rename from integration-tests/TestApp/app/src/androidTest/java/com/android/databinding/testapp/ApplicationTest.java
rename to integration-tests/TestApp/app/src/androidTest/java/android/databinding/testapp/ApplicationTest.java
index e1bbd42..7c7a9b4 100644
--- a/integration-tests/TestApp/app/src/androidTest/java/com/android/databinding/testapp/ApplicationTest.java
+++ b/integration-tests/TestApp/app/src/androidTest/java/android/databinding/testapp/ApplicationTest.java
@@ -11,7 +11,7 @@
  * limitations under the License.
  */
 
-package com.android.databinding.testapp;
+package android.databinding.testapp;
 
 import android.app.Application;
 import android.test.ApplicationTestCase;
@@ -24,4 +24,4 @@
     public ApplicationTest() {
         super(Application.class);
     }
-}
\ No newline at end of file
+}
diff --git a/integration-tests/TestApp/app/src/androidTest/java/com/android/databinding/testapp/AutoCompleteTextViewBindingAdapterTest.java b/integration-tests/TestApp/app/src/androidTest/java/android/databinding/testapp/AutoCompleteTextViewBindingAdapterTest.java
similarity index 90%
rename from integration-tests/TestApp/app/src/androidTest/java/com/android/databinding/testapp/AutoCompleteTextViewBindingAdapterTest.java
rename to integration-tests/TestApp/app/src/androidTest/java/android/databinding/testapp/AutoCompleteTextViewBindingAdapterTest.java
index a529d98..60067a2 100644
--- a/integration-tests/TestApp/app/src/androidTest/java/com/android/databinding/testapp/AutoCompleteTextViewBindingAdapterTest.java
+++ b/integration-tests/TestApp/app/src/androidTest/java/android/databinding/testapp/AutoCompleteTextViewBindingAdapterTest.java
@@ -13,10 +13,10 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package com.android.databinding.testapp;
+package android.databinding.testapp;
 
-import com.android.databinding.testapp.generated.AutoCompleteTextViewAdapterTestBinding;
-import com.android.databinding.testapp.vo.AutoCompleteTextViewBindingObject;
+import android.databinding.testapp.generated.AutoCompleteTextViewAdapterTestBinding;
+import android.databinding.testapp.vo.AutoCompleteTextViewBindingObject;
 
 import android.graphics.drawable.ColorDrawable;
 import android.os.Build;
diff --git a/integration-tests/TestApp/app/src/androidTest/java/com/android/databinding/testapp/BaseDataBinderTest.java b/integration-tests/TestApp/app/src/androidTest/java/android/databinding/testapp/BaseDataBinderTest.java
similarity index 88%
rename from integration-tests/TestApp/app/src/androidTest/java/com/android/databinding/testapp/BaseDataBinderTest.java
rename to integration-tests/TestApp/app/src/androidTest/java/android/databinding/testapp/BaseDataBinderTest.java
index b70353a..16a9456 100644
--- a/integration-tests/TestApp/app/src/androidTest/java/com/android/databinding/testapp/BaseDataBinderTest.java
+++ b/integration-tests/TestApp/app/src/androidTest/java/android/databinding/testapp/BaseDataBinderTest.java
@@ -11,15 +11,18 @@
  * limitations under the License.
  */
 
-package com.android.databinding.testapp;
+package android.databinding.testapp;
 
-import com.android.databinding.library.ViewDataBinding;
+import android.databinding.ViewDataBinding;
 
 import android.content.Context;
 import android.content.pm.ActivityInfo;
 import android.os.Looper;
 import android.test.ActivityInstrumentationTestCase2;
+import android.util.Log;
 
+import java.io.PrintWriter;
+import java.io.StringWriter;
 import java.lang.reflect.Method;
 
 public class BaseDataBinderTest<T extends ViewDataBinding>
@@ -60,7 +63,10 @@
                     mBinder = (T) method.invoke(null, getActivity());
                     getActivity().setContentView(mBinder.getRoot());
                 } catch (Exception e) {
-                    fail("Error creating binder");
+                    StringWriter sw = new StringWriter();
+                    PrintWriter pw = new PrintWriter(sw);
+                    e.printStackTrace(pw);
+                    fail("Error creating binder: " + sw.toString());
                 }
             }
         });
diff --git a/integration-tests/TestApp/app/src/androidTest/java/com/android/databinding/testapp/BaseLandDataBinderTest.java b/integration-tests/TestApp/app/src/androidTest/java/android/databinding/testapp/BaseLandDataBinderTest.java
similarity index 90%
rename from integration-tests/TestApp/app/src/androidTest/java/com/android/databinding/testapp/BaseLandDataBinderTest.java
rename to integration-tests/TestApp/app/src/androidTest/java/android/databinding/testapp/BaseLandDataBinderTest.java
index dee1a34..830e79b 100644
--- a/integration-tests/TestApp/app/src/androidTest/java/com/android/databinding/testapp/BaseLandDataBinderTest.java
+++ b/integration-tests/TestApp/app/src/androidTest/java/android/databinding/testapp/BaseLandDataBinderTest.java
@@ -11,9 +11,9 @@
  * limitations under the License.
  */
 
-package com.android.databinding.testapp;
+package android.databinding.testapp;
 
-import com.android.databinding.library.ViewDataBinding;
+import android.databinding.ViewDataBinding;
 
 import android.content.pm.ActivityInfo;
 
diff --git a/integration-tests/TestApp/app/src/androidTest/java/com/android/databinding/testapp/BaseObservableTest.java b/integration-tests/TestApp/app/src/androidTest/java/android/databinding/testapp/BaseObservableTest.java
similarity index 91%
rename from integration-tests/TestApp/app/src/androidTest/java/com/android/databinding/testapp/BaseObservableTest.java
rename to integration-tests/TestApp/app/src/androidTest/java/android/databinding/testapp/BaseObservableTest.java
index dd7acbc..2586430 100644
--- a/integration-tests/TestApp/app/src/androidTest/java/com/android/databinding/testapp/BaseObservableTest.java
+++ b/integration-tests/TestApp/app/src/androidTest/java/android/databinding/testapp/BaseObservableTest.java
@@ -13,13 +13,13 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package com.android.databinding.testapp;
+package android.databinding.testapp;
 
-import com.android.databinding.library.BaseObservable;
-import com.android.databinding.testapp.generated.BasicBindingBinding;
+import android.databinding.BaseObservable;
+import android.databinding.testapp.generated.BasicBindingBinding;
 
-import android.binding.Observable;
-import android.binding.OnPropertyChangedListener;
+import android.databinding.Observable;
+import android.databinding.OnPropertyChangedListener;
 
 import java.util.ArrayList;
 
diff --git a/integration-tests/TestApp/app/src/androidTest/java/com/android/databinding/testapp/BasicBindingTest.java b/integration-tests/TestApp/app/src/androidTest/java/android/databinding/testapp/BasicBindingTest.java
similarity index 94%
rename from integration-tests/TestApp/app/src/androidTest/java/com/android/databinding/testapp/BasicBindingTest.java
rename to integration-tests/TestApp/app/src/androidTest/java/android/databinding/testapp/BasicBindingTest.java
index d6385d0..d8a1aec 100644
--- a/integration-tests/TestApp/app/src/androidTest/java/com/android/databinding/testapp/BasicBindingTest.java
+++ b/integration-tests/TestApp/app/src/androidTest/java/android/databinding/testapp/BasicBindingTest.java
@@ -11,9 +11,9 @@
  * limitations under the License.
  */
 
-package com.android.databinding.testapp;
+package android.databinding.testapp;
 
-import com.android.databinding.testapp.generated.BasicBindingBinding;
+import android.databinding.testapp.generated.BasicBindingBinding;
 
 import android.test.UiThreadTest;
 
diff --git a/integration-tests/TestApp/app/src/androidTest/java/com/android/databinding/testapp/BasicDependantBindingTest.java b/integration-tests/TestApp/app/src/androidTest/java/android/databinding/testapp/BasicDependantBindingTest.java
similarity index 94%
rename from integration-tests/TestApp/app/src/androidTest/java/com/android/databinding/testapp/BasicDependantBindingTest.java
rename to integration-tests/TestApp/app/src/androidTest/java/android/databinding/testapp/BasicDependantBindingTest.java
index cb96e25..4adfd2d 100644
--- a/integration-tests/TestApp/app/src/androidTest/java/com/android/databinding/testapp/BasicDependantBindingTest.java
+++ b/integration-tests/TestApp/app/src/androidTest/java/android/databinding/testapp/BasicDependantBindingTest.java
@@ -11,10 +11,10 @@
  * limitations under the License.
  */
 
-package com.android.databinding.testapp;
+package android.databinding.testapp;
 
-import com.android.databinding.testapp.generated.BasicDependantBindingBinding;
-import com.android.databinding.testapp.vo.NotBindableVo;
+import android.databinding.testapp.generated.BasicDependantBindingBinding;
+import android.databinding.testapp.vo.NotBindableVo;
 
 import android.test.UiThreadTest;
 
diff --git a/integration-tests/TestApp/app/src/androidTest/java/com/android/databinding/testapp/BindToFinalFieldTest.java b/integration-tests/TestApp/app/src/androidTest/java/android/databinding/testapp/BindToFinalFieldTest.java
similarity index 87%
rename from integration-tests/TestApp/app/src/androidTest/java/com/android/databinding/testapp/BindToFinalFieldTest.java
rename to integration-tests/TestApp/app/src/androidTest/java/android/databinding/testapp/BindToFinalFieldTest.java
index 0c0a2de..41a8566 100644
--- a/integration-tests/TestApp/app/src/androidTest/java/com/android/databinding/testapp/BindToFinalFieldTest.java
+++ b/integration-tests/TestApp/app/src/androidTest/java/android/databinding/testapp/BindToFinalFieldTest.java
@@ -11,10 +11,10 @@
  * limitations under the License.
  */
 
-package com.android.databinding.testapp;
+package android.databinding.testapp;
 
-import com.android.databinding.testapp.generated.BindToFinalBinding;
-import com.android.databinding.testapp.vo.PublicFinalTestVo;
+import android.databinding.testapp.generated.BindToFinalBinding;
+import android.databinding.testapp.vo.PublicFinalTestVo;
 
 import android.test.UiThreadTest;
 import android.widget.TextView;
diff --git a/integration-tests/TestApp/app/src/androidTest/java/com/android/databinding/testapp/BindToFinalObservableFieldTest.java b/integration-tests/TestApp/app/src/androidTest/java/android/databinding/testapp/BindToFinalObservableFieldTest.java
similarity index 89%
rename from integration-tests/TestApp/app/src/androidTest/java/com/android/databinding/testapp/BindToFinalObservableFieldTest.java
rename to integration-tests/TestApp/app/src/androidTest/java/android/databinding/testapp/BindToFinalObservableFieldTest.java
index dc45be6..7f8a8c8 100644
--- a/integration-tests/TestApp/app/src/androidTest/java/com/android/databinding/testapp/BindToFinalObservableFieldTest.java
+++ b/integration-tests/TestApp/app/src/androidTest/java/android/databinding/testapp/BindToFinalObservableFieldTest.java
@@ -11,10 +11,10 @@
  * limitations under the License.
  */
 
-package com.android.databinding.testapp;
+package android.databinding.testapp;
 
-import com.android.databinding.testapp.generated.BindToFinalObservableBinding;
-import com.android.databinding.testapp.vo.PublicFinalWithObservableTestVo;
+import android.databinding.testapp.generated.BindToFinalObservableBinding;
+import android.databinding.testapp.vo.PublicFinalWithObservableTestVo;
 
 import android.test.UiThreadTest;
 import android.widget.TextView;
diff --git a/integration-tests/TestApp/app/src/androidTest/java/com/android/databinding/testapp/BindingAdapterTestBase.java b/integration-tests/TestApp/app/src/androidTest/java/android/databinding/testapp/BindingAdapterTestBase.java
similarity index 93%
rename from integration-tests/TestApp/app/src/androidTest/java/com/android/databinding/testapp/BindingAdapterTestBase.java
rename to integration-tests/TestApp/app/src/androidTest/java/android/databinding/testapp/BindingAdapterTestBase.java
index cc8e3e2..730ebb2 100644
--- a/integration-tests/TestApp/app/src/androidTest/java/com/android/databinding/testapp/BindingAdapterTestBase.java
+++ b/integration-tests/TestApp/app/src/androidTest/java/android/databinding/testapp/BindingAdapterTestBase.java
@@ -13,10 +13,10 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package com.android.databinding.testapp;
+package android.databinding.testapp;
 
-import com.android.databinding.library.ViewDataBinding;
-import com.android.databinding.testapp.vo.BindingAdapterBindingObject;
+import android.databinding.ViewDataBinding;
+import android.databinding.testapp.vo.BindingAdapterBindingObject;
 
 import java.lang.reflect.InvocationTargetException;
 import java.lang.reflect.Method;
diff --git a/integration-tests/TestApp/app/src/androidTest/java/com/android/databinding/testapp/BracketTest.java b/integration-tests/TestApp/app/src/androidTest/java/android/databinding/testapp/BracketTest.java
similarity index 96%
rename from integration-tests/TestApp/app/src/androidTest/java/com/android/databinding/testapp/BracketTest.java
rename to integration-tests/TestApp/app/src/androidTest/java/android/databinding/testapp/BracketTest.java
index cb01e3c..dac5fcd 100644
--- a/integration-tests/TestApp/app/src/androidTest/java/com/android/databinding/testapp/BracketTest.java
+++ b/integration-tests/TestApp/app/src/androidTest/java/android/databinding/testapp/BracketTest.java
@@ -11,9 +11,9 @@
  * limitations under the License.
  */
 
-package com.android.databinding.testapp;
+package android.databinding.testapp;
 
-import com.android.databinding.testapp.generated.BracketTestBinding;
+import android.databinding.testapp.generated.BracketTestBinding;
 
 import android.test.UiThreadTest;
 import android.util.LongSparseArray;
diff --git a/integration-tests/TestApp/app/src/androidTest/java/com/android/databinding/testapp/CastTest.java b/integration-tests/TestApp/app/src/androidTest/java/android/databinding/testapp/CastTest.java
similarity index 94%
rename from integration-tests/TestApp/app/src/androidTest/java/com/android/databinding/testapp/CastTest.java
rename to integration-tests/TestApp/app/src/androidTest/java/android/databinding/testapp/CastTest.java
index 497325e..e4a04f0 100644
--- a/integration-tests/TestApp/app/src/androidTest/java/com/android/databinding/testapp/CastTest.java
+++ b/integration-tests/TestApp/app/src/androidTest/java/android/databinding/testapp/CastTest.java
@@ -13,9 +13,9 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package com.android.databinding.testapp;
+package android.databinding.testapp;
 
-import com.android.databinding.testapp.generated.CastTestBinding;
+import android.databinding.testapp.generated.CastTestBinding;
 
 import android.support.v4.util.ArrayMap;
 import android.test.UiThreadTest;
diff --git a/integration-tests/TestApp/app/src/androidTest/java/com/android/databinding/testapp/CheckedTextViewBindingAdapterTest.java b/integration-tests/TestApp/app/src/androidTest/java/android/databinding/testapp/CheckedTextViewBindingAdapterTest.java
similarity index 90%
rename from integration-tests/TestApp/app/src/androidTest/java/com/android/databinding/testapp/CheckedTextViewBindingAdapterTest.java
rename to integration-tests/TestApp/app/src/androidTest/java/android/databinding/testapp/CheckedTextViewBindingAdapterTest.java
index ac4090c..3baa1b7 100644
--- a/integration-tests/TestApp/app/src/androidTest/java/com/android/databinding/testapp/CheckedTextViewBindingAdapterTest.java
+++ b/integration-tests/TestApp/app/src/androidTest/java/android/databinding/testapp/CheckedTextViewBindingAdapterTest.java
@@ -13,10 +13,10 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package com.android.databinding.testapp;
+package android.databinding.testapp;
 
-import com.android.databinding.testapp.generated.CheckedTextViewAdapterTestBinding;
-import com.android.databinding.testapp.vo.CheckedTextViewBindingObject;
+import android.databinding.testapp.generated.CheckedTextViewAdapterTestBinding;
+import android.databinding.testapp.vo.CheckedTextViewBindingObject;
 
 import android.graphics.drawable.ColorDrawable;
 import android.os.Build;
diff --git a/integration-tests/TestApp/app/src/androidTest/java/com/android/databinding/testapp/CompoundButtonBindingAdapterTest.java b/integration-tests/TestApp/app/src/androidTest/java/android/databinding/testapp/CompoundButtonBindingAdapterTest.java
similarity index 88%
rename from integration-tests/TestApp/app/src/androidTest/java/com/android/databinding/testapp/CompoundButtonBindingAdapterTest.java
rename to integration-tests/TestApp/app/src/androidTest/java/android/databinding/testapp/CompoundButtonBindingAdapterTest.java
index 55902ea..45c66ba 100644
--- a/integration-tests/TestApp/app/src/androidTest/java/com/android/databinding/testapp/CompoundButtonBindingAdapterTest.java
+++ b/integration-tests/TestApp/app/src/androidTest/java/android/databinding/testapp/CompoundButtonBindingAdapterTest.java
@@ -13,10 +13,10 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package com.android.databinding.testapp;
+package android.databinding.testapp;
 
-import com.android.databinding.testapp.generated.CompoundButtonAdapterTestBinding;
-import com.android.databinding.testapp.vo.CompoundButtonBindingObject;
+import android.databinding.testapp.generated.CompoundButtonAdapterTestBinding;
+import android.databinding.testapp.vo.CompoundButtonBindingObject;
 
 import android.widget.CompoundButton;
 
diff --git a/integration-tests/TestApp/app/src/androidTest/java/com/android/databinding/testapp/ConditionalBindingTest.java b/integration-tests/TestApp/app/src/androidTest/java/android/databinding/testapp/ConditionalBindingTest.java
similarity index 84%
rename from integration-tests/TestApp/app/src/androidTest/java/com/android/databinding/testapp/ConditionalBindingTest.java
rename to integration-tests/TestApp/app/src/androidTest/java/android/databinding/testapp/ConditionalBindingTest.java
index 2fe21cf..c01165d 100644
--- a/integration-tests/TestApp/app/src/androidTest/java/com/android/databinding/testapp/ConditionalBindingTest.java
+++ b/integration-tests/TestApp/app/src/androidTest/java/android/databinding/testapp/ConditionalBindingTest.java
@@ -1,7 +1,7 @@
-package com.android.databinding.testapp;
+package android.databinding.testapp;
 
-import com.android.databinding.testapp.generated.ConditionalBindingBinding;
-import com.android.databinding.testapp.vo.NotBindableVo;
+import android.databinding.testapp.generated.ConditionalBindingBinding;
+import android.databinding.testapp.vo.NotBindableVo;
 
 import android.test.UiThreadTest;
 
diff --git a/integration-tests/TestApp/app/src/androidTest/java/com/android/databinding/testapp/FindMethodTest.java b/integration-tests/TestApp/app/src/androidTest/java/android/databinding/testapp/FindMethodTest.java
similarity index 95%
rename from integration-tests/TestApp/app/src/androidTest/java/com/android/databinding/testapp/FindMethodTest.java
rename to integration-tests/TestApp/app/src/androidTest/java/android/databinding/testapp/FindMethodTest.java
index 0de1fc4..634dd72 100644
--- a/integration-tests/TestApp/app/src/androidTest/java/com/android/databinding/testapp/FindMethodTest.java
+++ b/integration-tests/TestApp/app/src/androidTest/java/android/databinding/testapp/FindMethodTest.java
@@ -13,10 +13,10 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package com.android.databinding.testapp;
+package android.databinding.testapp;
 
-import com.android.databinding.testapp.generated.FindMethodTestBinding;
-import com.android.databinding.testapp.vo.FindMethodBindingObject;
+import android.databinding.testapp.generated.FindMethodTestBinding;
+import android.databinding.testapp.vo.FindMethodBindingObject;
 
 import android.test.UiThreadTest;
 import android.widget.TextView;
diff --git a/integration-tests/TestApp/app/src/androidTest/java/com/android/databinding/testapp/FrameLayoutBindingAdapterTest.java b/integration-tests/TestApp/app/src/androidTest/java/android/databinding/testapp/FrameLayoutBindingAdapterTest.java
similarity index 89%
rename from integration-tests/TestApp/app/src/androidTest/java/com/android/databinding/testapp/FrameLayoutBindingAdapterTest.java
rename to integration-tests/TestApp/app/src/androidTest/java/android/databinding/testapp/FrameLayoutBindingAdapterTest.java
index 8c46311..94432e4 100644
--- a/integration-tests/TestApp/app/src/androidTest/java/com/android/databinding/testapp/FrameLayoutBindingAdapterTest.java
+++ b/integration-tests/TestApp/app/src/androidTest/java/android/databinding/testapp/FrameLayoutBindingAdapterTest.java
@@ -13,10 +13,10 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package com.android.databinding.testapp;
+package android.databinding.testapp;
 
-import com.android.databinding.testapp.generated.FrameLayoutAdapterTestBinding;
-import com.android.databinding.testapp.vo.FrameLayoutBindingObject;
+import android.databinding.testapp.generated.FrameLayoutAdapterTestBinding;
+import android.databinding.testapp.vo.FrameLayoutBindingObject;
 
 import android.os.Build;
 import android.widget.FrameLayout;
diff --git a/integration-tests/TestApp/app/src/androidTest/java/com/android/databinding/testapp/ImageViewBindingAdapterTest.java b/integration-tests/TestApp/app/src/androidTest/java/android/databinding/testapp/ImageViewBindingAdapterTest.java
similarity index 89%
rename from integration-tests/TestApp/app/src/androidTest/java/com/android/databinding/testapp/ImageViewBindingAdapterTest.java
rename to integration-tests/TestApp/app/src/androidTest/java/android/databinding/testapp/ImageViewBindingAdapterTest.java
index 8f08ab9..1b5ce9b 100644
--- a/integration-tests/TestApp/app/src/androidTest/java/com/android/databinding/testapp/ImageViewBindingAdapterTest.java
+++ b/integration-tests/TestApp/app/src/androidTest/java/android/databinding/testapp/ImageViewBindingAdapterTest.java
@@ -13,10 +13,10 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package com.android.databinding.testapp;
+package android.databinding.testapp;
 
-import com.android.databinding.testapp.generated.ImageViewAdapterTestBinding;
-import com.android.databinding.testapp.vo.ImageViewBindingObject;
+import android.databinding.testapp.generated.ImageViewAdapterTestBinding;
+import android.databinding.testapp.vo.ImageViewBindingObject;
 
 import android.widget.ImageView;
 
diff --git a/integration-tests/TestApp/app/src/androidTest/java/com/android/databinding/testapp/IncludeTagTest.java b/integration-tests/TestApp/app/src/androidTest/java/android/databinding/testapp/IncludeTagTest.java
similarity index 90%
rename from integration-tests/TestApp/app/src/androidTest/java/com/android/databinding/testapp/IncludeTagTest.java
rename to integration-tests/TestApp/app/src/androidTest/java/android/databinding/testapp/IncludeTagTest.java
index cc2d393..b9482b3 100644
--- a/integration-tests/TestApp/app/src/androidTest/java/com/android/databinding/testapp/IncludeTagTest.java
+++ b/integration-tests/TestApp/app/src/androidTest/java/android/databinding/testapp/IncludeTagTest.java
@@ -11,10 +11,10 @@
  * limitations under the License.
  */
 
-package com.android.databinding.testapp;
+package android.databinding.testapp;
 
-import com.android.databinding.testapp.generated.LayoutWithIncludeBinding;
-import com.android.databinding.testapp.vo.NotBindableVo;
+import android.databinding.testapp.generated.LayoutWithIncludeBinding;
+import android.databinding.testapp.vo.NotBindableVo;
 
 import android.test.UiThreadTest;
 import android.widget.TextView;
diff --git a/integration-tests/TestApp/app/src/androidTest/java/com/android/databinding/testapp/LandDataBinderTest.java b/integration-tests/TestApp/app/src/androidTest/java/android/databinding/testapp/LandDataBinderTest.java
similarity index 93%
rename from integration-tests/TestApp/app/src/androidTest/java/com/android/databinding/testapp/LandDataBinderTest.java
rename to integration-tests/TestApp/app/src/androidTest/java/android/databinding/testapp/LandDataBinderTest.java
index 218c799..69b629e 100644
--- a/integration-tests/TestApp/app/src/androidTest/java/com/android/databinding/testapp/LandDataBinderTest.java
+++ b/integration-tests/TestApp/app/src/androidTest/java/android/databinding/testapp/LandDataBinderTest.java
@@ -11,7 +11,7 @@
  * limitations under the License.
  */
 
-package com.android.databinding.testapp;
+package android.databinding.testapp;
 
 public class LandDataBinderTest {
 
diff --git a/integration-tests/TestApp/app/src/androidTest/java/com/android/databinding/testapp/LinearLayoutBindingAdapterTest.java b/integration-tests/TestApp/app/src/androidTest/java/android/databinding/testapp/LinearLayoutBindingAdapterTest.java
similarity index 89%
rename from integration-tests/TestApp/app/src/androidTest/java/com/android/databinding/testapp/LinearLayoutBindingAdapterTest.java
rename to integration-tests/TestApp/app/src/androidTest/java/android/databinding/testapp/LinearLayoutBindingAdapterTest.java
index 0d95ad5..8b958d1 100644
--- a/integration-tests/TestApp/app/src/androidTest/java/com/android/databinding/testapp/LinearLayoutBindingAdapterTest.java
+++ b/integration-tests/TestApp/app/src/androidTest/java/android/databinding/testapp/LinearLayoutBindingAdapterTest.java
@@ -13,10 +13,10 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package com.android.databinding.testapp;
+package android.databinding.testapp;
 
-import com.android.databinding.testapp.generated.LinearLayoutAdapterTestBinding;
-import com.android.databinding.testapp.vo.LinearLayoutBindingObject;
+import android.databinding.testapp.generated.LinearLayoutAdapterTestBinding;
+import android.databinding.testapp.vo.LinearLayoutBindingObject;
 
 import android.os.Build;
 import android.widget.LinearLayout;
diff --git a/integration-tests/TestApp/app/src/androidTest/java/com/android/databinding/testapp/ListChangeRegistryTest.java b/integration-tests/TestApp/app/src/androidTest/java/android/databinding/testapp/ListChangeRegistryTest.java
similarity index 96%
rename from integration-tests/TestApp/app/src/androidTest/java/com/android/databinding/testapp/ListChangeRegistryTest.java
rename to integration-tests/TestApp/app/src/androidTest/java/android/databinding/testapp/ListChangeRegistryTest.java
index 2a5d0b6..7abd077 100644
--- a/integration-tests/TestApp/app/src/androidTest/java/com/android/databinding/testapp/ListChangeRegistryTest.java
+++ b/integration-tests/TestApp/app/src/androidTest/java/android/databinding/testapp/ListChangeRegistryTest.java
@@ -13,12 +13,12 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package com.android.databinding.testapp;
+package android.databinding.testapp;
 
-import com.android.databinding.library.ListChangeRegistry;
-import com.android.databinding.testapp.generated.BasicBindingBinding;
+import android.databinding.ListChangeRegistry;
+import android.databinding.testapp.generated.BasicBindingBinding;
 
-import android.binding.OnListChangedListener;
+import android.databinding.OnListChangedListener;
 
 public class ListChangeRegistryTest extends BaseDataBinderTest<BasicBindingBinding> {
 
diff --git a/integration-tests/TestApp/app/src/androidTest/java/com/android/databinding/testapp/MapChangeRegistryTest.java b/integration-tests/TestApp/app/src/androidTest/java/android/databinding/testapp/MapChangeRegistryTest.java
similarity index 84%
rename from integration-tests/TestApp/app/src/androidTest/java/com/android/databinding/testapp/MapChangeRegistryTest.java
rename to integration-tests/TestApp/app/src/androidTest/java/android/databinding/testapp/MapChangeRegistryTest.java
index b30dc49..b1edcbb 100644
--- a/integration-tests/TestApp/app/src/androidTest/java/com/android/databinding/testapp/MapChangeRegistryTest.java
+++ b/integration-tests/TestApp/app/src/androidTest/java/android/databinding/testapp/MapChangeRegistryTest.java
@@ -13,14 +13,14 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package com.android.databinding.testapp;
+package android.databinding.testapp;
 
-import com.android.databinding.library.MapChangeRegistry;
-import com.android.databinding.library.ObservableArrayMap;
-import com.android.databinding.testapp.generated.BasicBindingBinding;
+import android.databinding.MapChangeRegistry;
+import android.databinding.ObservableArrayMap;
+import android.databinding.testapp.generated.BasicBindingBinding;
 
-import android.binding.ObservableMap;
-import android.binding.OnMapChangedListener;
+import android.databinding.ObservableMap;
+import android.databinding.OnMapChangedListener;
 
 public class MapChangeRegistryTest extends BaseDataBinderTest<BasicBindingBinding> {
 
diff --git a/integration-tests/TestApp/app/src/androidTest/java/com/android/databinding/testapp/NewApiTest.java b/integration-tests/TestApp/app/src/androidTest/java/android/databinding/testapp/NewApiTest.java
similarity index 93%
rename from integration-tests/TestApp/app/src/androidTest/java/com/android/databinding/testapp/NewApiTest.java
rename to integration-tests/TestApp/app/src/androidTest/java/android/databinding/testapp/NewApiTest.java
index bbb337a..db2d145 100644
--- a/integration-tests/TestApp/app/src/androidTest/java/com/android/databinding/testapp/NewApiTest.java
+++ b/integration-tests/TestApp/app/src/androidTest/java/android/databinding/testapp/NewApiTest.java
@@ -11,10 +11,10 @@
  * limitations under the License.
  */
 
-package com.android.databinding.testapp;
+package android.databinding.testapp;
 
-import com.android.databinding.library.DataBinderTrojan;
-import com.android.databinding.testapp.generated.NewApiLayoutBinding;
+import android.databinding.DataBinderTrojan;
+import android.databinding.testapp.generated.NewApiLayoutBinding;
 
 import android.os.Build;
 import android.test.UiThreadTest;
diff --git a/integration-tests/TestApp/app/src/androidTest/java/com/android/databinding/testapp/NoIdTest.java b/integration-tests/TestApp/app/src/androidTest/java/android/databinding/testapp/NoIdTest.java
similarity index 96%
rename from integration-tests/TestApp/app/src/androidTest/java/com/android/databinding/testapp/NoIdTest.java
rename to integration-tests/TestApp/app/src/androidTest/java/android/databinding/testapp/NoIdTest.java
index 6509924..52b7cb8 100644
--- a/integration-tests/TestApp/app/src/androidTest/java/com/android/databinding/testapp/NoIdTest.java
+++ b/integration-tests/TestApp/app/src/androidTest/java/android/databinding/testapp/NoIdTest.java
@@ -11,9 +11,9 @@
  * limitations under the License.
  */
 
-package com.android.databinding.testapp;
+package android.databinding.testapp;
 
-import com.android.databinding.testapp.generated.NoIdTestBinding;
+import android.databinding.testapp.generated.NoIdTestBinding;
 
 import android.test.UiThreadTest;
 import android.widget.LinearLayout;
diff --git a/integration-tests/TestApp/app/src/androidTest/java/com/android/databinding/testapp/ObservableArrayListTest.java b/integration-tests/TestApp/app/src/androidTest/java/android/databinding/testapp/ObservableArrayListTest.java
similarity index 96%
rename from integration-tests/TestApp/app/src/androidTest/java/com/android/databinding/testapp/ObservableArrayListTest.java
rename to integration-tests/TestApp/app/src/androidTest/java/android/databinding/testapp/ObservableArrayListTest.java
index ef84ff4..0ce6015 100644
--- a/integration-tests/TestApp/app/src/androidTest/java/com/android/databinding/testapp/ObservableArrayListTest.java
+++ b/integration-tests/TestApp/app/src/androidTest/java/android/databinding/testapp/ObservableArrayListTest.java
@@ -13,13 +13,13 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package com.android.databinding.testapp;
+package android.databinding.testapp;
 
-import com.android.databinding.library.ObservableArrayList;
-import com.android.databinding.testapp.generated.BasicBindingBinding;
+import android.databinding.ObservableArrayList;
+import android.databinding.testapp.generated.BasicBindingBinding;
 
-import android.binding.ObservableList;
-import android.binding.OnListChangedListener;
+import android.databinding.ObservableList;
+import android.databinding.OnListChangedListener;
 
 import java.util.ArrayList;
 
diff --git a/integration-tests/TestApp/app/src/androidTest/java/com/android/databinding/testapp/ObservableArrayMapTest.java b/integration-tests/TestApp/app/src/androidTest/java/android/databinding/testapp/ObservableArrayMapTest.java
similarity index 96%
rename from integration-tests/TestApp/app/src/androidTest/java/com/android/databinding/testapp/ObservableArrayMapTest.java
rename to integration-tests/TestApp/app/src/androidTest/java/android/databinding/testapp/ObservableArrayMapTest.java
index a2f02cf..04945ac 100644
--- a/integration-tests/TestApp/app/src/androidTest/java/com/android/databinding/testapp/ObservableArrayMapTest.java
+++ b/integration-tests/TestApp/app/src/androidTest/java/android/databinding/testapp/ObservableArrayMapTest.java
@@ -13,13 +13,13 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package com.android.databinding.testapp;
+package android.databinding.testapp;
 
-import com.android.databinding.library.ObservableArrayMap;
-import com.android.databinding.testapp.generated.BasicBindingBinding;
+import android.databinding.ObservableArrayMap;
+import android.databinding.testapp.generated.BasicBindingBinding;
 
-import android.binding.ObservableMap;
-import android.binding.OnMapChangedListener;
+import android.databinding.ObservableMap;
+import android.databinding.OnMapChangedListener;
 import android.support.v4.util.ArrayMap;
 import android.support.v4.util.SimpleArrayMap;
 
diff --git a/integration-tests/TestApp/app/src/androidTest/java/com/android/databinding/testapp/ObservableFieldTest.java b/integration-tests/TestApp/app/src/androidTest/java/android/databinding/testapp/ObservableFieldTest.java
similarity index 94%
rename from integration-tests/TestApp/app/src/androidTest/java/com/android/databinding/testapp/ObservableFieldTest.java
rename to integration-tests/TestApp/app/src/androidTest/java/android/databinding/testapp/ObservableFieldTest.java
index a81764b..4803ee6 100644
--- a/integration-tests/TestApp/app/src/androidTest/java/com/android/databinding/testapp/ObservableFieldTest.java
+++ b/integration-tests/TestApp/app/src/androidTest/java/android/databinding/testapp/ObservableFieldTest.java
@@ -11,10 +11,10 @@
  * limitations under the License.
  */
 
-package com.android.databinding.testapp;
+package android.databinding.testapp;
 
-import com.android.databinding.testapp.generated.ObservableFieldTestBinding;
-import com.android.databinding.testapp.vo.ObservableFieldBindingObject;
+import android.databinding.testapp.generated.ObservableFieldTestBinding;
+import android.databinding.testapp.vo.ObservableFieldBindingObject;
 
 import android.test.UiThreadTest;
 import android.widget.TextView;
diff --git a/integration-tests/TestApp/app/src/androidTest/java/com/android/databinding/testapp/ObservableWithNotBindableFieldObjectTest.java b/integration-tests/TestApp/app/src/androidTest/java/android/databinding/testapp/ObservableWithNotBindableFieldObjectTest.java
similarity index 81%
rename from integration-tests/TestApp/app/src/androidTest/java/com/android/databinding/testapp/ObservableWithNotBindableFieldObjectTest.java
rename to integration-tests/TestApp/app/src/androidTest/java/android/databinding/testapp/ObservableWithNotBindableFieldObjectTest.java
index 53a2601..3d8579a 100644
--- a/integration-tests/TestApp/app/src/androidTest/java/com/android/databinding/testapp/ObservableWithNotBindableFieldObjectTest.java
+++ b/integration-tests/TestApp/app/src/androidTest/java/android/databinding/testapp/ObservableWithNotBindableFieldObjectTest.java
@@ -11,12 +11,12 @@
  * limitations under the License.
  */
 
-package com.android.databinding.testapp;
+package android.databinding.testapp;
 
-import com.android.databinding.testapp.BaseDataBinderTest;
-import com.android.databinding.testapp.R;
-import com.android.databinding.testapp.generated.ObservableWithNotBindableFieldBinding;
-import com.android.databinding.testapp.vo.ObservableWithNotBindableFieldObject;
+import android.databinding.testapp.BaseDataBinderTest;
+import android.databinding.testapp.R;
+import android.databinding.testapp.generated.ObservableWithNotBindableFieldBinding;
+import android.databinding.testapp.vo.ObservableWithNotBindableFieldObject;
 
 import android.test.UiThreadTest;
 
diff --git a/integration-tests/TestApp/app/src/androidTest/java/com/android/databinding/testapp/ProcessBindableTest.java b/integration-tests/TestApp/app/src/androidTest/java/android/databinding/testapp/ProcessBindableTest.java
similarity index 93%
rename from integration-tests/TestApp/app/src/androidTest/java/com/android/databinding/testapp/ProcessBindableTest.java
rename to integration-tests/TestApp/app/src/androidTest/java/android/databinding/testapp/ProcessBindableTest.java
index 0b57927..2d36bfd 100644
--- a/integration-tests/TestApp/app/src/androidTest/java/com/android/databinding/testapp/ProcessBindableTest.java
+++ b/integration-tests/TestApp/app/src/androidTest/java/android/databinding/testapp/ProcessBindableTest.java
@@ -13,16 +13,16 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package com.android.databinding.testapp;
+package android.databinding.testapp;
 
-import com.android.databinding.testapp.generated.BasicBindingBinding;
+import android.databinding.testapp.generated.BasicBindingBinding;
 
 import android.util.ArrayMap;
 
 import java.lang.reflect.Field;
 import java.lang.reflect.Modifier;
 import java.util.HashSet;
-import com.android.databinding.testapp.BR;
+import android.databinding.testapp.BR;
 public class ProcessBindableTest extends BaseDataBinderTest<BasicBindingBinding> {
     private static String[] EXPECTED_BINDING_NAMES = {
             "bindableField1",
diff --git a/integration-tests/TestApp/app/src/androidTest/java/com/android/databinding/testapp/ProgressBarBindingAdapterTest.java b/integration-tests/TestApp/app/src/androidTest/java/android/databinding/testapp/ProgressBarBindingAdapterTest.java
similarity index 91%
rename from integration-tests/TestApp/app/src/androidTest/java/com/android/databinding/testapp/ProgressBarBindingAdapterTest.java
rename to integration-tests/TestApp/app/src/androidTest/java/android/databinding/testapp/ProgressBarBindingAdapterTest.java
index 88b9b22..92eec7b 100644
--- a/integration-tests/TestApp/app/src/androidTest/java/com/android/databinding/testapp/ProgressBarBindingAdapterTest.java
+++ b/integration-tests/TestApp/app/src/androidTest/java/android/databinding/testapp/ProgressBarBindingAdapterTest.java
@@ -13,10 +13,10 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package com.android.databinding.testapp;
+package android.databinding.testapp;
 
-import com.android.databinding.testapp.generated.ProgressBarAdapterTestBinding;
-import com.android.databinding.testapp.vo.ProgressBarBindingObject;
+import android.databinding.testapp.generated.ProgressBarAdapterTestBinding;
+import android.databinding.testapp.vo.ProgressBarBindingObject;
 
 import android.os.Build;
 import android.widget.ProgressBar;
diff --git a/integration-tests/TestApp/app/src/androidTest/java/com/android/databinding/testapp/PropertyChangeRegistryTest.java b/integration-tests/TestApp/app/src/androidTest/java/android/databinding/testapp/PropertyChangeRegistryTest.java
similarity index 88%
rename from integration-tests/TestApp/app/src/androidTest/java/com/android/databinding/testapp/PropertyChangeRegistryTest.java
rename to integration-tests/TestApp/app/src/androidTest/java/android/databinding/testapp/PropertyChangeRegistryTest.java
index ee76595..1ef34e3 100644
--- a/integration-tests/TestApp/app/src/androidTest/java/com/android/databinding/testapp/PropertyChangeRegistryTest.java
+++ b/integration-tests/TestApp/app/src/androidTest/java/android/databinding/testapp/PropertyChangeRegistryTest.java
@@ -13,13 +13,13 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package com.android.databinding.testapp;
+package android.databinding.testapp;
 
-import com.android.databinding.library.PropertyChangeRegistry;
-import com.android.databinding.testapp.generated.BasicBindingBinding;
+import android.databinding.PropertyChangeRegistry;
+import android.databinding.testapp.generated.BasicBindingBinding;
 
-import android.binding.Observable;
-import android.binding.OnPropertyChangedListener;
+import android.databinding.Observable;
+import android.databinding.OnPropertyChangedListener;
 
 public class PropertyChangeRegistryTest extends BaseDataBinderTest<BasicBindingBinding> {
 
diff --git a/integration-tests/TestApp/app/src/androidTest/java/com/android/databinding/testapp/RadioGroupBindingAdapterTest.java b/integration-tests/TestApp/app/src/androidTest/java/android/databinding/testapp/RadioGroupBindingAdapterTest.java
similarity index 88%
rename from integration-tests/TestApp/app/src/androidTest/java/com/android/databinding/testapp/RadioGroupBindingAdapterTest.java
rename to integration-tests/TestApp/app/src/androidTest/java/android/databinding/testapp/RadioGroupBindingAdapterTest.java
index 9fbcc50..f9cc374 100644
--- a/integration-tests/TestApp/app/src/androidTest/java/com/android/databinding/testapp/RadioGroupBindingAdapterTest.java
+++ b/integration-tests/TestApp/app/src/androidTest/java/android/databinding/testapp/RadioGroupBindingAdapterTest.java
@@ -13,10 +13,10 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package com.android.databinding.testapp;
+package android.databinding.testapp;
 
-import com.android.databinding.testapp.generated.RadioGroupAdapterTestBinding;
-import com.android.databinding.testapp.vo.RadioGroupBindingObject;
+import android.databinding.testapp.generated.RadioGroupAdapterTestBinding;
+import android.databinding.testapp.vo.RadioGroupBindingObject;
 
 import android.widget.RadioGroup;
 
diff --git a/integration-tests/TestApp/app/src/androidTest/java/com/android/databinding/testapp/ResourceTest.java b/integration-tests/TestApp/app/src/androidTest/java/android/databinding/testapp/ResourceTest.java
similarity index 95%
rename from integration-tests/TestApp/app/src/androidTest/java/com/android/databinding/testapp/ResourceTest.java
rename to integration-tests/TestApp/app/src/androidTest/java/android/databinding/testapp/ResourceTest.java
index 5672086..ed1fb79 100644
--- a/integration-tests/TestApp/app/src/androidTest/java/com/android/databinding/testapp/ResourceTest.java
+++ b/integration-tests/TestApp/app/src/androidTest/java/android/databinding/testapp/ResourceTest.java
@@ -13,9 +13,9 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package com.android.databinding.testapp;
+package android.databinding.testapp;
 
-import com.android.databinding.testapp.generated.ResourceTestBinding;
+import android.databinding.testapp.generated.ResourceTestBinding;
 
 import android.test.UiThreadTest;
 import android.widget.TextView;
diff --git a/integration-tests/TestApp/app/src/androidTest/java/com/android/databinding/testapp/SpinnerBindingAdapterTest.java b/integration-tests/TestApp/app/src/androidTest/java/android/databinding/testapp/SpinnerBindingAdapterTest.java
similarity index 89%
rename from integration-tests/TestApp/app/src/androidTest/java/com/android/databinding/testapp/SpinnerBindingAdapterTest.java
rename to integration-tests/TestApp/app/src/androidTest/java/android/databinding/testapp/SpinnerBindingAdapterTest.java
index c186791..63bc5e7 100644
--- a/integration-tests/TestApp/app/src/androidTest/java/com/android/databinding/testapp/SpinnerBindingAdapterTest.java
+++ b/integration-tests/TestApp/app/src/androidTest/java/android/databinding/testapp/SpinnerBindingAdapterTest.java
@@ -13,10 +13,10 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package com.android.databinding.testapp;
+package android.databinding.testapp;
 
-import com.android.databinding.testapp.generated.SpinnerAdapterTestBinding;
-import com.android.databinding.testapp.vo.SpinnerBindingObject;
+import android.databinding.testapp.generated.SpinnerAdapterTestBinding;
+import android.databinding.testapp.vo.SpinnerBindingObject;
 
 import android.graphics.drawable.ColorDrawable;
 import android.os.Build;
diff --git a/integration-tests/TestApp/app/src/androidTest/java/com/android/databinding/testapp/SwitchBindingAdapterTest.java b/integration-tests/TestApp/app/src/androidTest/java/android/databinding/testapp/SwitchBindingAdapterTest.java
similarity index 90%
rename from integration-tests/TestApp/app/src/androidTest/java/com/android/databinding/testapp/SwitchBindingAdapterTest.java
rename to integration-tests/TestApp/app/src/androidTest/java/android/databinding/testapp/SwitchBindingAdapterTest.java
index a9debee..a10a57f 100644
--- a/integration-tests/TestApp/app/src/androidTest/java/com/android/databinding/testapp/SwitchBindingAdapterTest.java
+++ b/integration-tests/TestApp/app/src/androidTest/java/android/databinding/testapp/SwitchBindingAdapterTest.java
@@ -13,10 +13,10 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package com.android.databinding.testapp;
+package android.databinding.testapp;
 
-import com.android.databinding.testapp.generated.SwitchAdapterTestBinding;
-import com.android.databinding.testapp.vo.SwitchBindingObject;
+import android.databinding.testapp.generated.SwitchAdapterTestBinding;
+import android.databinding.testapp.vo.SwitchBindingObject;
 
 import android.graphics.drawable.ColorDrawable;
 import android.os.Build;
diff --git a/integration-tests/TestApp/app/src/androidTest/java/com/android/databinding/testapp/TabWidgetBindingAdapterTest.java b/integration-tests/TestApp/app/src/androidTest/java/android/databinding/testapp/TabWidgetBindingAdapterTest.java
similarity index 90%
rename from integration-tests/TestApp/app/src/androidTest/java/com/android/databinding/testapp/TabWidgetBindingAdapterTest.java
rename to integration-tests/TestApp/app/src/androidTest/java/android/databinding/testapp/TabWidgetBindingAdapterTest.java
index c328b38..d9a8fe0 100644
--- a/integration-tests/TestApp/app/src/androidTest/java/com/android/databinding/testapp/TabWidgetBindingAdapterTest.java
+++ b/integration-tests/TestApp/app/src/androidTest/java/android/databinding/testapp/TabWidgetBindingAdapterTest.java
@@ -13,10 +13,10 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package com.android.databinding.testapp;
+package android.databinding.testapp;
 
-import com.android.databinding.testapp.generated.TabWidgetAdapterTestBinding;
-import com.android.databinding.testapp.vo.TabWidgetBindingObject;
+import android.databinding.testapp.generated.TabWidgetAdapterTestBinding;
+import android.databinding.testapp.vo.TabWidgetBindingObject;
 
 import android.graphics.drawable.ColorDrawable;
 import android.os.Build;
diff --git a/integration-tests/TestApp/app/src/androidTest/java/com/android/databinding/testapp/TableLayoutBindingAdapterTest.java b/integration-tests/TestApp/app/src/androidTest/java/android/databinding/testapp/TableLayoutBindingAdapterTest.java
similarity index 93%
rename from integration-tests/TestApp/app/src/androidTest/java/com/android/databinding/testapp/TableLayoutBindingAdapterTest.java
rename to integration-tests/TestApp/app/src/androidTest/java/android/databinding/testapp/TableLayoutBindingAdapterTest.java
index e4fb7ea..fc18596 100644
--- a/integration-tests/TestApp/app/src/androidTest/java/com/android/databinding/testapp/TableLayoutBindingAdapterTest.java
+++ b/integration-tests/TestApp/app/src/androidTest/java/android/databinding/testapp/TableLayoutBindingAdapterTest.java
@@ -13,10 +13,10 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package com.android.databinding.testapp;
+package android.databinding.testapp;
 
-import com.android.databinding.testapp.generated.TableLayoutAdapterTestBinding;
-import com.android.databinding.testapp.vo.TableLayoutBindingObject;
+import android.databinding.testapp.generated.TableLayoutAdapterTestBinding;
+import android.databinding.testapp.vo.TableLayoutBindingObject;
 
 import android.graphics.drawable.ColorDrawable;
 import android.os.Build;
diff --git a/integration-tests/TestApp/app/src/androidTest/java/com/android/databinding/testapp/TextViewBindingAdapterTest.java b/integration-tests/TestApp/app/src/androidTest/java/android/databinding/testapp/TextViewBindingAdapterTest.java
similarity index 98%
rename from integration-tests/TestApp/app/src/androidTest/java/com/android/databinding/testapp/TextViewBindingAdapterTest.java
rename to integration-tests/TestApp/app/src/androidTest/java/android/databinding/testapp/TextViewBindingAdapterTest.java
index f788fde..4c89120 100644
--- a/integration-tests/TestApp/app/src/androidTest/java/com/android/databinding/testapp/TextViewBindingAdapterTest.java
+++ b/integration-tests/TestApp/app/src/androidTest/java/android/databinding/testapp/TextViewBindingAdapterTest.java
@@ -13,13 +13,13 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package com.android.databinding.testapp;
+package android.databinding.testapp;
 
-import com.android.databinding.testapp.generated.TextViewAdapterTestBinding;
-import com.android.databinding.testapp.vo.TextViewBindingObject;
+import android.databinding.testapp.generated.TextViewAdapterTestBinding;
+import android.databinding.testapp.vo.TextViewBindingObject;
 
 import android.annotation.TargetApi;
-import android.binding.adapters.TextViewBindingAdapter;
+import android.databinding.adapters.TextViewBindingAdapter;
 import android.graphics.drawable.ColorDrawable;
 import android.os.Build;
 import android.text.Editable;
diff --git a/integration-tests/TestApp/app/src/androidTest/java/com/android/databinding/testapp/ViewBindingAdapterTest.java b/integration-tests/TestApp/app/src/androidTest/java/android/databinding/testapp/ViewBindingAdapterTest.java
similarity index 97%
rename from integration-tests/TestApp/app/src/androidTest/java/com/android/databinding/testapp/ViewBindingAdapterTest.java
rename to integration-tests/TestApp/app/src/androidTest/java/android/databinding/testapp/ViewBindingAdapterTest.java
index fa47ad2..6570909 100644
--- a/integration-tests/TestApp/app/src/androidTest/java/com/android/databinding/testapp/ViewBindingAdapterTest.java
+++ b/integration-tests/TestApp/app/src/androidTest/java/android/databinding/testapp/ViewBindingAdapterTest.java
@@ -13,10 +13,10 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package com.android.databinding.testapp;
+package android.databinding.testapp;
 
-import com.android.databinding.testapp.generated.ViewAdapterTestBinding;
-import com.android.databinding.testapp.vo.ViewBindingObject;
+import android.databinding.testapp.generated.ViewAdapterTestBinding;
+import android.databinding.testapp.vo.ViewBindingObject;
 
 import android.content.res.ColorStateList;
 import android.os.Build;
diff --git a/integration-tests/TestApp/app/src/androidTest/java/com/android/databinding/testapp/ViewGroupBindingAdapterTest.java b/integration-tests/TestApp/app/src/androidTest/java/android/databinding/testapp/ViewGroupBindingAdapterTest.java
similarity index 93%
rename from integration-tests/TestApp/app/src/androidTest/java/com/android/databinding/testapp/ViewGroupBindingAdapterTest.java
rename to integration-tests/TestApp/app/src/androidTest/java/android/databinding/testapp/ViewGroupBindingAdapterTest.java
index 0eaeaea..f9e44cd 100644
--- a/integration-tests/TestApp/app/src/androidTest/java/com/android/databinding/testapp/ViewGroupBindingAdapterTest.java
+++ b/integration-tests/TestApp/app/src/androidTest/java/android/databinding/testapp/ViewGroupBindingAdapterTest.java
@@ -13,10 +13,10 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package com.android.databinding.testapp;
+package android.databinding.testapp;
 
-import com.android.databinding.testapp.generated.ViewGroupAdapterTestBinding;
-import com.android.databinding.testapp.vo.ViewGroupBindingObject;
+import android.databinding.testapp.generated.ViewGroupAdapterTestBinding;
+import android.databinding.testapp.vo.ViewGroupBindingObject;
 
 import android.os.Build;
 import android.view.ViewGroup;
diff --git a/integration-tests/TestApp/app/src/androidTest/java/com/android/databinding/testapp/ViewStubBindingAdapterTest.java b/integration-tests/TestApp/app/src/androidTest/java/android/databinding/testapp/ViewStubBindingAdapterTest.java
similarity index 87%
rename from integration-tests/TestApp/app/src/androidTest/java/com/android/databinding/testapp/ViewStubBindingAdapterTest.java
rename to integration-tests/TestApp/app/src/androidTest/java/android/databinding/testapp/ViewStubBindingAdapterTest.java
index 142a5c1..9b63815 100644
--- a/integration-tests/TestApp/app/src/androidTest/java/com/android/databinding/testapp/ViewStubBindingAdapterTest.java
+++ b/integration-tests/TestApp/app/src/androidTest/java/android/databinding/testapp/ViewStubBindingAdapterTest.java
@@ -13,10 +13,10 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package com.android.databinding.testapp;
+package android.databinding.testapp;
 
-import com.android.databinding.testapp.generated.ViewStubAdapterTestBinding;
-import com.android.databinding.testapp.vo.ViewStubBindingObject;
+import android.databinding.testapp.generated.ViewStubAdapterTestBinding;
+import android.databinding.testapp.vo.ViewStubBindingObject;
 
 import android.view.ViewStub;
 
diff --git a/integration-tests/TestApp/app/src/androidTest/java/com/android/databinding/testapp/multiconfig/LandscapeConfigTest.java b/integration-tests/TestApp/app/src/androidTest/java/android/databinding/testapp/multiconfig/LandscapeConfigTest.java
similarity index 80%
rename from integration-tests/TestApp/app/src/androidTest/java/com/android/databinding/testapp/multiconfig/LandscapeConfigTest.java
rename to integration-tests/TestApp/app/src/androidTest/java/android/databinding/testapp/multiconfig/LandscapeConfigTest.java
index ab16c66..fde7c27 100644
--- a/integration-tests/TestApp/app/src/androidTest/java/com/android/databinding/testapp/multiconfig/LandscapeConfigTest.java
+++ b/integration-tests/TestApp/app/src/androidTest/java/android/databinding/testapp/multiconfig/LandscapeConfigTest.java
@@ -11,16 +11,16 @@
  * limitations under the License.
  */
 
-package com.android.databinding.testapp.multiconfig;
+package android.databinding.testapp.multiconfig;
 
-import com.android.databinding.library.ViewDataBinding;
-import com.android.databinding.testapp.BaseLandDataBinderTest;
-import com.android.databinding.testapp.R;
-import com.android.databinding.testapp.generated.BasicBindingBinding;
-import com.android.databinding.testapp.generated.ConditionalBindingBinding;
-import com.android.databinding.testapp.generated.IncludedLayoutBinding;
-import com.android.databinding.testapp.generated.MultiResLayoutBinding;
-import com.android.databinding.testapp.vo.NotBindableVo;
+import android.databinding.ViewDataBinding;
+import android.databinding.testapp.BaseLandDataBinderTest;
+import android.databinding.testapp.R;
+import android.databinding.testapp.generated.BasicBindingBinding;
+import android.databinding.testapp.generated.ConditionalBindingBinding;
+import android.databinding.testapp.generated.IncludedLayoutBinding;
+import android.databinding.testapp.generated.MultiResLayoutBinding;
+import android.databinding.testapp.vo.NotBindableVo;
 
 import android.content.pm.ActivityInfo;
 import android.view.View;
diff --git a/integration-tests/TestApp/app/src/androidTest/java/com/android/databinding/testapp/multiconfig/PortraitConfigTest.java b/integration-tests/TestApp/app/src/androidTest/java/android/databinding/testapp/multiconfig/PortraitConfigTest.java
similarity index 82%
rename from integration-tests/TestApp/app/src/androidTest/java/com/android/databinding/testapp/multiconfig/PortraitConfigTest.java
rename to integration-tests/TestApp/app/src/androidTest/java/android/databinding/testapp/multiconfig/PortraitConfigTest.java
index 4532a5b..1f5f735 100644
--- a/integration-tests/TestApp/app/src/androidTest/java/com/android/databinding/testapp/multiconfig/PortraitConfigTest.java
+++ b/integration-tests/TestApp/app/src/androidTest/java/android/databinding/testapp/multiconfig/PortraitConfigTest.java
@@ -11,15 +11,15 @@
  * limitations under the License.
  */
 
-package com.android.databinding.testapp.multiconfig;
+package android.databinding.testapp.multiconfig;
 
-import com.android.databinding.library.ViewDataBinding;
-import com.android.databinding.testapp.BaseDataBinderTest;
-import com.android.databinding.testapp.generated.BasicBindingBinding;
-import com.android.databinding.testapp.generated.ConditionalBindingBinding;
-import com.android.databinding.testapp.generated.IncludedLayoutBinding;
-import com.android.databinding.testapp.generated.MultiResLayoutBinding;
-import com.android.databinding.testapp.vo.NotBindableVo;
+import android.databinding.ViewDataBinding;
+import android.databinding.testapp.BaseDataBinderTest;
+import android.databinding.testapp.generated.BasicBindingBinding;
+import android.databinding.testapp.generated.ConditionalBindingBinding;
+import android.databinding.testapp.generated.IncludedLayoutBinding;
+import android.databinding.testapp.generated.MultiResLayoutBinding;
+import android.databinding.testapp.vo.NotBindableVo;
 
 import android.content.pm.ActivityInfo;
 import android.view.View;
diff --git a/integration-tests/TestApp/app/src/main/AndroidManifest.xml b/integration-tests/TestApp/app/src/main/AndroidManifest.xml
index ae2581a..c6f719e 100644
--- a/integration-tests/TestApp/app/src/main/AndroidManifest.xml
+++ b/integration-tests/TestApp/app/src/main/AndroidManifest.xml
@@ -12,7 +12,7 @@
   -->
 
 <manifest xmlns:android="http://schemas.android.com/apk/res/android"
-          package="com.android.databinding.testapp">
+          package="android.databinding.testapp">
 
     <application android:allowBackup="true"
                  android:label="@string/app_name"
diff --git a/integration-tests/TestApp/app/src/main/java/com/android/databinding/testapp/TestActivity.java b/integration-tests/TestApp/app/src/main/java/android/databinding/testapp/TestActivity.java
similarity index 95%
rename from integration-tests/TestApp/app/src/main/java/com/android/databinding/testapp/TestActivity.java
rename to integration-tests/TestApp/app/src/main/java/android/databinding/testapp/TestActivity.java
index fa9dd42..d5f95e6 100644
--- a/integration-tests/TestApp/app/src/main/java/com/android/databinding/testapp/TestActivity.java
+++ b/integration-tests/TestApp/app/src/main/java/android/databinding/testapp/TestActivity.java
@@ -14,7 +14,7 @@
  * limitations under the License.
  */
 
-package com.android.databinding.testapp;
+package android.databinding.testapp;
 
 import android.app.Activity;
 import android.os.Bundle;
diff --git a/integration-tests/TestApp/app/src/main/java/com/android/databinding/testapp/vo/AbsListViewBindingObject.java b/integration-tests/TestApp/app/src/main/java/android/databinding/testapp/vo/AbsListViewBindingObject.java
similarity index 88%
rename from integration-tests/TestApp/app/src/main/java/com/android/databinding/testapp/vo/AbsListViewBindingObject.java
rename to integration-tests/TestApp/app/src/main/java/android/databinding/testapp/vo/AbsListViewBindingObject.java
index ff0bfbd..24bc067 100644
--- a/integration-tests/TestApp/app/src/main/java/com/android/databinding/testapp/vo/AbsListViewBindingObject.java
+++ b/integration-tests/TestApp/app/src/main/java/android/databinding/testapp/vo/AbsListViewBindingObject.java
@@ -13,13 +13,10 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package com.android.databinding.testapp.vo;
+package android.databinding.testapp.vo;
 
-import com.android.databinding.library.BaseObservable;
-
-import android.binding.Bindable;
+import android.databinding.Bindable;
 import android.graphics.drawable.ColorDrawable;
-import android.graphics.drawable.Drawable;
 
 public class AbsListViewBindingObject extends BindingAdapterBindingObject {
     @Bindable
diff --git a/integration-tests/TestApp/app/src/main/java/com/android/databinding/testapp/vo/AbsSeekBarBindingObject.java b/integration-tests/TestApp/app/src/main/java/android/databinding/testapp/vo/AbsSeekBarBindingObject.java
similarity index 80%
rename from integration-tests/TestApp/app/src/main/java/com/android/databinding/testapp/vo/AbsSeekBarBindingObject.java
rename to integration-tests/TestApp/app/src/main/java/android/databinding/testapp/vo/AbsSeekBarBindingObject.java
index bc62445..bc8c3cb 100644
--- a/integration-tests/TestApp/app/src/main/java/com/android/databinding/testapp/vo/AbsSeekBarBindingObject.java
+++ b/integration-tests/TestApp/app/src/main/java/android/databinding/testapp/vo/AbsSeekBarBindingObject.java
@@ -13,13 +13,9 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package com.android.databinding.testapp.vo;
+package android.databinding.testapp.vo;
 
-import com.android.databinding.library.BaseObservable;
-
-import android.binding.Bindable;
-import android.graphics.drawable.ColorDrawable;
-import android.graphics.drawable.Drawable;
+import android.databinding.Bindable;
 
 public class AbsSeekBarBindingObject extends BindingAdapterBindingObject {
     @Bindable
diff --git a/integration-tests/TestApp/app/src/main/java/com/android/databinding/testapp/vo/AbsSpinnerBindingObject.java b/integration-tests/TestApp/app/src/main/java/android/databinding/testapp/vo/AbsSpinnerBindingObject.java
similarity index 89%
rename from integration-tests/TestApp/app/src/main/java/com/android/databinding/testapp/vo/AbsSpinnerBindingObject.java
rename to integration-tests/TestApp/app/src/main/java/android/databinding/testapp/vo/AbsSpinnerBindingObject.java
index 6e35436..05d7ed7 100644
--- a/integration-tests/TestApp/app/src/main/java/com/android/databinding/testapp/vo/AbsSpinnerBindingObject.java
+++ b/integration-tests/TestApp/app/src/main/java/android/databinding/testapp/vo/AbsSpinnerBindingObject.java
@@ -13,11 +13,9 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package com.android.databinding.testapp.vo;
+package android.databinding.testapp.vo;
 
-import com.android.databinding.library.BaseObservable;
-
-import android.binding.Bindable;
+import android.databinding.Bindable;
 
 public class AbsSpinnerBindingObject extends BindingAdapterBindingObject {
     @Bindable
diff --git a/integration-tests/TestApp/app/src/main/java/com/android/databinding/testapp/vo/AutoCompleteTextViewBindingObject.java b/integration-tests/TestApp/app/src/main/java/android/databinding/testapp/vo/AutoCompleteTextViewBindingObject.java
similarity index 89%
rename from integration-tests/TestApp/app/src/main/java/com/android/databinding/testapp/vo/AutoCompleteTextViewBindingObject.java
rename to integration-tests/TestApp/app/src/main/java/android/databinding/testapp/vo/AutoCompleteTextViewBindingObject.java
index 66e2003..eef46d6 100644
--- a/integration-tests/TestApp/app/src/main/java/com/android/databinding/testapp/vo/AutoCompleteTextViewBindingObject.java
+++ b/integration-tests/TestApp/app/src/main/java/android/databinding/testapp/vo/AutoCompleteTextViewBindingObject.java
@@ -13,11 +13,9 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package com.android.databinding.testapp.vo;
+package android.databinding.testapp.vo;
 
-import com.android.databinding.library.BaseObservable;
-
-import android.binding.Bindable;
+import android.databinding.Bindable;
 
 public class AutoCompleteTextViewBindingObject extends BindingAdapterBindingObject {
     @Bindable
diff --git a/integration-tests/TestApp/app/src/main/java/com/android/databinding/testapp/vo/BindableTestObject.java b/integration-tests/TestApp/app/src/main/java/android/databinding/testapp/vo/BindableTestObject.java
similarity index 93%
rename from integration-tests/TestApp/app/src/main/java/com/android/databinding/testapp/vo/BindableTestObject.java
rename to integration-tests/TestApp/app/src/main/java/android/databinding/testapp/vo/BindableTestObject.java
index 63ef9c1..d297f8a 100644
--- a/integration-tests/TestApp/app/src/main/java/com/android/databinding/testapp/vo/BindableTestObject.java
+++ b/integration-tests/TestApp/app/src/main/java/android/databinding/testapp/vo/BindableTestObject.java
@@ -13,9 +13,9 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package com.android.databinding.testapp.vo;
+package android.databinding.testapp.vo;
 
-import android.binding.Bindable;
+import android.databinding.Bindable;
 
 public class BindableTestObject {
     @Bindable
diff --git a/integration-tests/TestApp/app/src/main/java/com/android/databinding/testapp/vo/BindingAdapterBindingObject.java b/integration-tests/TestApp/app/src/main/java/android/databinding/testapp/vo/BindingAdapterBindingObject.java
similarity index 88%
rename from integration-tests/TestApp/app/src/main/java/com/android/databinding/testapp/vo/BindingAdapterBindingObject.java
rename to integration-tests/TestApp/app/src/main/java/android/databinding/testapp/vo/BindingAdapterBindingObject.java
index bd93070..404e104 100644
--- a/integration-tests/TestApp/app/src/main/java/com/android/databinding/testapp/vo/BindingAdapterBindingObject.java
+++ b/integration-tests/TestApp/app/src/main/java/android/databinding/testapp/vo/BindingAdapterBindingObject.java
@@ -13,9 +13,9 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package com.android.databinding.testapp.vo;
+package android.databinding.testapp.vo;
 
-import com.android.databinding.library.BaseObservable;
+import android.databinding.BaseObservable;
 
 public abstract class BindingAdapterBindingObject extends BaseObservable {
 
diff --git a/integration-tests/TestApp/app/src/main/java/com/android/databinding/testapp/vo/CheckedTextViewBindingObject.java b/integration-tests/TestApp/app/src/main/java/android/databinding/testapp/vo/CheckedTextViewBindingObject.java
similarity index 89%
rename from integration-tests/TestApp/app/src/main/java/com/android/databinding/testapp/vo/CheckedTextViewBindingObject.java
rename to integration-tests/TestApp/app/src/main/java/android/databinding/testapp/vo/CheckedTextViewBindingObject.java
index 6dc3dad..75eba50 100644
--- a/integration-tests/TestApp/app/src/main/java/com/android/databinding/testapp/vo/CheckedTextViewBindingObject.java
+++ b/integration-tests/TestApp/app/src/main/java/android/databinding/testapp/vo/CheckedTextViewBindingObject.java
@@ -13,11 +13,9 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package com.android.databinding.testapp.vo;
+package android.databinding.testapp.vo;
 
-import com.android.databinding.library.BaseObservable;
-
-import android.binding.Bindable;
+import android.databinding.Bindable;
 import android.graphics.drawable.ColorDrawable;
 
 public class CheckedTextViewBindingObject extends BindingAdapterBindingObject {
diff --git a/integration-tests/TestApp/app/src/main/java/com/android/databinding/testapp/vo/CompoundButtonBindingObject.java b/integration-tests/TestApp/app/src/main/java/android/databinding/testapp/vo/CompoundButtonBindingObject.java
similarity index 87%
rename from integration-tests/TestApp/app/src/main/java/com/android/databinding/testapp/vo/CompoundButtonBindingObject.java
rename to integration-tests/TestApp/app/src/main/java/android/databinding/testapp/vo/CompoundButtonBindingObject.java
index 80052f4..bb13201 100644
--- a/integration-tests/TestApp/app/src/main/java/com/android/databinding/testapp/vo/CompoundButtonBindingObject.java
+++ b/integration-tests/TestApp/app/src/main/java/android/databinding/testapp/vo/CompoundButtonBindingObject.java
@@ -13,11 +13,9 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package com.android.databinding.testapp.vo;
+package android.databinding.testapp.vo;
 
-import com.android.databinding.library.BaseObservable;
-
-import android.binding.Bindable;
+import android.databinding.Bindable;
 
 public class CompoundButtonBindingObject extends BindingAdapterBindingObject {
     @Bindable
diff --git a/integration-tests/TestApp/app/src/main/java/com/android/databinding/testapp/vo/FindMethodBindingObject.java b/integration-tests/TestApp/app/src/main/java/android/databinding/testapp/vo/FindMethodBindingObject.java
similarity index 97%
rename from integration-tests/TestApp/app/src/main/java/com/android/databinding/testapp/vo/FindMethodBindingObject.java
rename to integration-tests/TestApp/app/src/main/java/android/databinding/testapp/vo/FindMethodBindingObject.java
index a8040ed..2281e22 100644
--- a/integration-tests/TestApp/app/src/main/java/com/android/databinding/testapp/vo/FindMethodBindingObject.java
+++ b/integration-tests/TestApp/app/src/main/java/android/databinding/testapp/vo/FindMethodBindingObject.java
@@ -13,7 +13,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package com.android.databinding.testapp.vo;
+package android.databinding.testapp.vo;
 
 import android.util.ArrayMap;
 
diff --git a/integration-tests/TestApp/app/src/main/java/com/android/databinding/testapp/vo/FindMethodBindingObjectBase.java b/integration-tests/TestApp/app/src/main/java/android/databinding/testapp/vo/FindMethodBindingObjectBase.java
similarity index 95%
rename from integration-tests/TestApp/app/src/main/java/com/android/databinding/testapp/vo/FindMethodBindingObjectBase.java
rename to integration-tests/TestApp/app/src/main/java/android/databinding/testapp/vo/FindMethodBindingObjectBase.java
index 142a3fe..8678e1e 100644
--- a/integration-tests/TestApp/app/src/main/java/com/android/databinding/testapp/vo/FindMethodBindingObjectBase.java
+++ b/integration-tests/TestApp/app/src/main/java/android/databinding/testapp/vo/FindMethodBindingObjectBase.java
@@ -13,7 +13,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package com.android.databinding.testapp.vo;
+package android.databinding.testapp.vo;
 
 public class FindMethodBindingObjectBase extends BindingAdapterBindingObject {
     public String inheritedMethod() {
diff --git a/integration-tests/TestApp/app/src/main/java/com/android/databinding/testapp/vo/FrameLayoutBindingObject.java b/integration-tests/TestApp/app/src/main/java/android/databinding/testapp/vo/FrameLayoutBindingObject.java
similarity index 87%
rename from integration-tests/TestApp/app/src/main/java/com/android/databinding/testapp/vo/FrameLayoutBindingObject.java
rename to integration-tests/TestApp/app/src/main/java/android/databinding/testapp/vo/FrameLayoutBindingObject.java
index 788c53c..a0fa6b7 100644
--- a/integration-tests/TestApp/app/src/main/java/com/android/databinding/testapp/vo/FrameLayoutBindingObject.java
+++ b/integration-tests/TestApp/app/src/main/java/android/databinding/testapp/vo/FrameLayoutBindingObject.java
@@ -13,11 +13,9 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package com.android.databinding.testapp.vo;
+package android.databinding.testapp.vo;
 
-import com.android.databinding.library.BaseObservable;
-
-import android.binding.Bindable;
+import android.databinding.Bindable;
 
 public class FrameLayoutBindingObject extends BindingAdapterBindingObject {
     @Bindable
diff --git a/integration-tests/TestApp/app/src/main/java/com/android/databinding/testapp/vo/ImageViewBindingObject.java b/integration-tests/TestApp/app/src/main/java/android/databinding/testapp/vo/ImageViewBindingObject.java
similarity index 90%
rename from integration-tests/TestApp/app/src/main/java/com/android/databinding/testapp/vo/ImageViewBindingObject.java
rename to integration-tests/TestApp/app/src/main/java/android/databinding/testapp/vo/ImageViewBindingObject.java
index 73990d3..926617e 100644
--- a/integration-tests/TestApp/app/src/main/java/com/android/databinding/testapp/vo/ImageViewBindingObject.java
+++ b/integration-tests/TestApp/app/src/main/java/android/databinding/testapp/vo/ImageViewBindingObject.java
@@ -13,11 +13,9 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package com.android.databinding.testapp.vo;
+package android.databinding.testapp.vo;
 
-import com.android.databinding.library.BaseObservable;
-
-import android.binding.Bindable;
+import android.databinding.Bindable;
 import android.graphics.PorterDuff;
 import android.graphics.drawable.ColorDrawable;
 import android.graphics.drawable.Drawable;
diff --git a/integration-tests/TestApp/app/src/main/java/com/android/databinding/testapp/vo/LinearLayoutBindingObject.java b/integration-tests/TestApp/app/src/main/java/android/databinding/testapp/vo/LinearLayoutBindingObject.java
similarity index 80%
rename from integration-tests/TestApp/app/src/main/java/com/android/databinding/testapp/vo/LinearLayoutBindingObject.java
rename to integration-tests/TestApp/app/src/main/java/android/databinding/testapp/vo/LinearLayoutBindingObject.java
index 1755fe8..f9e07c3 100644
--- a/integration-tests/TestApp/app/src/main/java/com/android/databinding/testapp/vo/LinearLayoutBindingObject.java
+++ b/integration-tests/TestApp/app/src/main/java/android/databinding/testapp/vo/LinearLayoutBindingObject.java
@@ -13,14 +13,9 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package com.android.databinding.testapp.vo;
+package android.databinding.testapp.vo;
 
-import com.android.databinding.library.BaseObservable;
-
-import android.binding.Bindable;
-import android.graphics.PorterDuff;
-import android.graphics.drawable.ColorDrawable;
-import android.graphics.drawable.Drawable;
+import android.databinding.Bindable;
 
 public class LinearLayoutBindingObject extends BindingAdapterBindingObject {
     @Bindable
diff --git a/integration-tests/TestApp/app/src/main/java/com/android/databinding/testapp/vo/NotBindableVo.java b/integration-tests/TestApp/app/src/main/java/android/databinding/testapp/vo/NotBindableVo.java
similarity index 97%
rename from integration-tests/TestApp/app/src/main/java/com/android/databinding/testapp/vo/NotBindableVo.java
rename to integration-tests/TestApp/app/src/main/java/android/databinding/testapp/vo/NotBindableVo.java
index a8ec026..64d1a48 100644
--- a/integration-tests/TestApp/app/src/main/java/com/android/databinding/testapp/vo/NotBindableVo.java
+++ b/integration-tests/TestApp/app/src/main/java/android/databinding/testapp/vo/NotBindableVo.java
@@ -11,7 +11,7 @@
  * limitations under the License.
  */
 
-package com.android.databinding.testapp.vo;
+package android.databinding.testapp.vo;
 
 public class NotBindableVo {
     private int mIntValue;
diff --git a/integration-tests/TestApp/app/src/main/java/com/android/databinding/testapp/vo/ObservableFieldBindingObject.java b/integration-tests/TestApp/app/src/main/java/android/databinding/testapp/vo/ObservableFieldBindingObject.java
similarity index 67%
rename from integration-tests/TestApp/app/src/main/java/com/android/databinding/testapp/vo/ObservableFieldBindingObject.java
rename to integration-tests/TestApp/app/src/main/java/android/databinding/testapp/vo/ObservableFieldBindingObject.java
index 651a8cf..87127fe 100644
--- a/integration-tests/TestApp/app/src/main/java/com/android/databinding/testapp/vo/ObservableFieldBindingObject.java
+++ b/integration-tests/TestApp/app/src/main/java/android/databinding/testapp/vo/ObservableFieldBindingObject.java
@@ -13,20 +13,17 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package com.android.databinding.testapp.vo;
+package android.databinding.testapp.vo;
 
-import com.android.databinding.library.BaseObservable;
-import com.android.databinding.library.ObservableBoolean;
-import com.android.databinding.library.ObservableByte;
-import com.android.databinding.library.ObservableChar;
-import com.android.databinding.library.ObservableDouble;
-import com.android.databinding.library.ObservableField;
-import com.android.databinding.library.ObservableFloat;
-import com.android.databinding.library.ObservableInt;
-import com.android.databinding.library.ObservableLong;
-import com.android.databinding.library.ObservableShort;
-
-import android.binding.Bindable;
+import android.databinding.ObservableBoolean;
+import android.databinding.ObservableByte;
+import android.databinding.ObservableChar;
+import android.databinding.ObservableDouble;
+import android.databinding.ObservableField;
+import android.databinding.ObservableFloat;
+import android.databinding.ObservableInt;
+import android.databinding.ObservableLong;
+import android.databinding.ObservableShort;
 
 public class ObservableFieldBindingObject {
     public final ObservableBoolean bField = new ObservableBoolean();
diff --git a/integration-tests/TestApp/app/src/main/java/com/android/databinding/testapp/vo/ObservableWithNotBindableFieldObject.java b/integration-tests/TestApp/app/src/main/java/android/databinding/testapp/vo/ObservableWithNotBindableFieldObject.java
similarity index 89%
rename from integration-tests/TestApp/app/src/main/java/com/android/databinding/testapp/vo/ObservableWithNotBindableFieldObject.java
rename to integration-tests/TestApp/app/src/main/java/android/databinding/testapp/vo/ObservableWithNotBindableFieldObject.java
index 1128421..ba33539 100644
--- a/integration-tests/TestApp/app/src/main/java/com/android/databinding/testapp/vo/ObservableWithNotBindableFieldObject.java
+++ b/integration-tests/TestApp/app/src/main/java/android/databinding/testapp/vo/ObservableWithNotBindableFieldObject.java
@@ -11,9 +11,9 @@
  * limitations under the License.
  */
 
-package com.android.databinding.testapp.vo;
+package android.databinding.testapp.vo;
 
-import com.android.databinding.library.BaseObservable;
+import android.databinding.BaseObservable;
 
 public class ObservableWithNotBindableFieldObject extends BaseObservable {
     private String data;
diff --git a/integration-tests/TestApp/app/src/main/java/com/android/databinding/testapp/vo/ProgressBarBindingObject.java b/integration-tests/TestApp/app/src/main/java/android/databinding/testapp/vo/ProgressBarBindingObject.java
similarity index 87%
rename from integration-tests/TestApp/app/src/main/java/com/android/databinding/testapp/vo/ProgressBarBindingObject.java
rename to integration-tests/TestApp/app/src/main/java/android/databinding/testapp/vo/ProgressBarBindingObject.java
index 189b388..8a18aba 100644
--- a/integration-tests/TestApp/app/src/main/java/com/android/databinding/testapp/vo/ProgressBarBindingObject.java
+++ b/integration-tests/TestApp/app/src/main/java/android/databinding/testapp/vo/ProgressBarBindingObject.java
@@ -13,12 +13,9 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package com.android.databinding.testapp.vo;
+package android.databinding.testapp.vo;
 
-import com.android.databinding.library.BaseObservable;
-import com.android.databinding.testapp.R;
-
-import android.binding.Bindable;
+import android.databinding.Bindable;
 
 public class ProgressBarBindingObject extends BindingAdapterBindingObject {
     @Bindable
diff --git a/integration-tests/TestApp/app/src/main/java/com/android/databinding/testapp/vo/PublicFinalTestVo.java b/integration-tests/TestApp/app/src/main/java/android/databinding/testapp/vo/PublicFinalTestVo.java
similarity index 94%
rename from integration-tests/TestApp/app/src/main/java/com/android/databinding/testapp/vo/PublicFinalTestVo.java
rename to integration-tests/TestApp/app/src/main/java/android/databinding/testapp/vo/PublicFinalTestVo.java
index 118717c..03135e3 100644
--- a/integration-tests/TestApp/app/src/main/java/com/android/databinding/testapp/vo/PublicFinalTestVo.java
+++ b/integration-tests/TestApp/app/src/main/java/android/databinding/testapp/vo/PublicFinalTestVo.java
@@ -11,7 +11,7 @@
  * limitations under the License.
  */
 
-package com.android.databinding.testapp.vo;
+package android.databinding.testapp.vo;
 
 public class PublicFinalTestVo {
     public final int myField;
diff --git a/integration-tests/TestApp/app/src/main/java/com/android/databinding/testapp/vo/PublicFinalWithObservableTestVo.java b/integration-tests/TestApp/app/src/main/java/android/databinding/testapp/vo/PublicFinalWithObservableTestVo.java
similarity index 83%
rename from integration-tests/TestApp/app/src/main/java/com/android/databinding/testapp/vo/PublicFinalWithObservableTestVo.java
rename to integration-tests/TestApp/app/src/main/java/android/databinding/testapp/vo/PublicFinalWithObservableTestVo.java
index 2c9695b..8d6f431 100644
--- a/integration-tests/TestApp/app/src/main/java/com/android/databinding/testapp/vo/PublicFinalWithObservableTestVo.java
+++ b/integration-tests/TestApp/app/src/main/java/android/databinding/testapp/vo/PublicFinalWithObservableTestVo.java
@@ -11,13 +11,12 @@
  * limitations under the License.
  */
 
-package com.android.databinding.testapp.vo;
+package android.databinding.testapp.vo;
 
-import com.android.databinding.library.BaseObservable;
-import com.android.databinding.testapp.R;
-
-import android.binding.Bindable;
-import com.android.databinding.testapp.BR;
+import android.databinding.BaseObservable;
+import android.databinding.Bindable;
+import android.databinding.testapp.BR;
+import android.databinding.testapp.R;
 
 public class PublicFinalWithObservableTestVo {
     public final int myField;
diff --git a/integration-tests/TestApp/app/src/main/java/com/android/databinding/testapp/vo/RadioGroupBindingObject.java b/integration-tests/TestApp/app/src/main/java/android/databinding/testapp/vo/RadioGroupBindingObject.java
similarity index 84%
rename from integration-tests/TestApp/app/src/main/java/com/android/databinding/testapp/vo/RadioGroupBindingObject.java
rename to integration-tests/TestApp/app/src/main/java/android/databinding/testapp/vo/RadioGroupBindingObject.java
index 1ddcb2f..ceacd20 100644
--- a/integration-tests/TestApp/app/src/main/java/com/android/databinding/testapp/vo/RadioGroupBindingObject.java
+++ b/integration-tests/TestApp/app/src/main/java/android/databinding/testapp/vo/RadioGroupBindingObject.java
@@ -13,12 +13,10 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package com.android.databinding.testapp.vo;
+package android.databinding.testapp.vo;
 
-import com.android.databinding.library.BaseObservable;
-import com.android.databinding.testapp.R;
-
-import android.binding.Bindable;
+import android.databinding.Bindable;
+import android.databinding.testapp.R;
 
 public class RadioGroupBindingObject extends BindingAdapterBindingObject {
     @Bindable
diff --git a/integration-tests/TestApp/app/src/main/java/com/android/databinding/testapp/vo/SpinnerBindingObject.java b/integration-tests/TestApp/app/src/main/java/android/databinding/testapp/vo/SpinnerBindingObject.java
similarity index 87%
rename from integration-tests/TestApp/app/src/main/java/com/android/databinding/testapp/vo/SpinnerBindingObject.java
rename to integration-tests/TestApp/app/src/main/java/android/databinding/testapp/vo/SpinnerBindingObject.java
index 39b07f5..c2ac72f 100644
--- a/integration-tests/TestApp/app/src/main/java/com/android/databinding/testapp/vo/SpinnerBindingObject.java
+++ b/integration-tests/TestApp/app/src/main/java/android/databinding/testapp/vo/SpinnerBindingObject.java
@@ -13,11 +13,9 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package com.android.databinding.testapp.vo;
+package android.databinding.testapp.vo;
 
-import com.android.databinding.library.BaseObservable;
-
-import android.binding.Bindable;
+import android.databinding.Bindable;
 
 public class SpinnerBindingObject extends BindingAdapterBindingObject {
     @Bindable
diff --git a/integration-tests/TestApp/app/src/main/java/com/android/databinding/testapp/vo/SwitchBindingObject.java b/integration-tests/TestApp/app/src/main/java/android/databinding/testapp/vo/SwitchBindingObject.java
similarity index 88%
rename from integration-tests/TestApp/app/src/main/java/com/android/databinding/testapp/vo/SwitchBindingObject.java
rename to integration-tests/TestApp/app/src/main/java/android/databinding/testapp/vo/SwitchBindingObject.java
index 1097b8e..86ea227 100644
--- a/integration-tests/TestApp/app/src/main/java/com/android/databinding/testapp/vo/SwitchBindingObject.java
+++ b/integration-tests/TestApp/app/src/main/java/android/databinding/testapp/vo/SwitchBindingObject.java
@@ -13,11 +13,9 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package com.android.databinding.testapp.vo;
+package android.databinding.testapp.vo;
 
-import com.android.databinding.library.BaseObservable;
-
-import android.binding.Bindable;
+import android.databinding.Bindable;
 
 public class SwitchBindingObject extends BindingAdapterBindingObject {
     @Bindable
diff --git a/integration-tests/TestApp/app/src/main/java/com/android/databinding/testapp/vo/TabWidgetBindingObject.java b/integration-tests/TestApp/app/src/main/java/android/databinding/testapp/vo/TabWidgetBindingObject.java
similarity index 92%
rename from integration-tests/TestApp/app/src/main/java/com/android/databinding/testapp/vo/TabWidgetBindingObject.java
rename to integration-tests/TestApp/app/src/main/java/android/databinding/testapp/vo/TabWidgetBindingObject.java
index d4937a5..2ce8681 100644
--- a/integration-tests/TestApp/app/src/main/java/com/android/databinding/testapp/vo/TabWidgetBindingObject.java
+++ b/integration-tests/TestApp/app/src/main/java/android/databinding/testapp/vo/TabWidgetBindingObject.java
@@ -13,11 +13,9 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package com.android.databinding.testapp.vo;
+package android.databinding.testapp.vo;
 
-import com.android.databinding.library.BaseObservable;
-
-import android.binding.Bindable;
+import android.databinding.Bindable;
 import android.graphics.drawable.ColorDrawable;
 
 public class TabWidgetBindingObject extends BindingAdapterBindingObject {
diff --git a/integration-tests/TestApp/app/src/main/java/com/android/databinding/testapp/vo/TableLayoutBindingObject.java b/integration-tests/TestApp/app/src/main/java/android/databinding/testapp/vo/TableLayoutBindingObject.java
similarity index 91%
rename from integration-tests/TestApp/app/src/main/java/com/android/databinding/testapp/vo/TableLayoutBindingObject.java
rename to integration-tests/TestApp/app/src/main/java/android/databinding/testapp/vo/TableLayoutBindingObject.java
index ab45800..34f7e8d 100644
--- a/integration-tests/TestApp/app/src/main/java/com/android/databinding/testapp/vo/TableLayoutBindingObject.java
+++ b/integration-tests/TestApp/app/src/main/java/android/databinding/testapp/vo/TableLayoutBindingObject.java
@@ -13,11 +13,9 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package com.android.databinding.testapp.vo;
+package android.databinding.testapp.vo;
 
-import com.android.databinding.library.BaseObservable;
-
-import android.binding.Bindable;
+import android.databinding.Bindable;
 
 public class TableLayoutBindingObject extends BindingAdapterBindingObject {
     @Bindable
diff --git a/integration-tests/TestApp/app/src/main/java/com/android/databinding/testapp/vo/TextViewBindingObject.java b/integration-tests/TestApp/app/src/main/java/android/databinding/testapp/vo/TextViewBindingObject.java
similarity index 94%
rename from integration-tests/TestApp/app/src/main/java/com/android/databinding/testapp/vo/TextViewBindingObject.java
rename to integration-tests/TestApp/app/src/main/java/android/databinding/testapp/vo/TextViewBindingObject.java
index 482be18..b1d04b6 100644
--- a/integration-tests/TestApp/app/src/main/java/com/android/databinding/testapp/vo/TextViewBindingObject.java
+++ b/integration-tests/TestApp/app/src/main/java/android/databinding/testapp/vo/TextViewBindingObject.java
@@ -13,10 +13,11 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package com.android.databinding.testapp.vo;
+package android.databinding.testapp.vo;
 
-import android.binding.Bindable;
-import android.binding.adapters.TextViewBindingAdapter;
+import android.databinding.Bindable;
+import android.databinding.adapters.TextViewBindingAdapter;
+import android.databinding.testapp.BR;
 import android.text.Editable;
 import android.text.InputType;
 import android.text.method.KeyListener;
@@ -25,7 +26,6 @@
 import android.view.KeyEvent;
 import android.view.View;
 import android.widget.TextView;
-import com.android.databinding.testapp.BR;
 
 public class TextViewBindingObject extends BindingAdapterBindingObject {
 
@@ -97,7 +97,7 @@
 
     @Bindable
     private String mInputMethod
-            = "com.android.databinding.testapp.vo.TextViewBindingObject$KeyListener1";
+            = "android.databinding.testapp.vo.TextViewBindingObject$KeyListener1";
 
     @Bindable
     private float mLineSpacingExtra;
@@ -275,7 +275,7 @@
         mDrawableEnd = 0xFF555555;
         mImeActionLabel = "Hello World";
         mImeActionId = 3;
-        mInputMethod = "com.android.databinding.testapp.vo.TextViewBindingObject$KeyListener2";
+        mInputMethod = "android.databinding.testapp.vo.TextViewBindingObject$KeyListener2";
         mLineSpacingExtra = 2;
         mLineSpacingMultiplier = 3;
         mMaxLength = 100;
diff --git a/integration-tests/TestApp/app/src/main/java/com/android/databinding/testapp/vo/ViewBindingObject.java b/integration-tests/TestApp/app/src/main/java/android/databinding/testapp/vo/ViewBindingObject.java
similarity index 94%
rename from integration-tests/TestApp/app/src/main/java/com/android/databinding/testapp/vo/ViewBindingObject.java
rename to integration-tests/TestApp/app/src/main/java/android/databinding/testapp/vo/ViewBindingObject.java
index 8486382..a955e81 100644
--- a/integration-tests/TestApp/app/src/main/java/com/android/databinding/testapp/vo/ViewBindingObject.java
+++ b/integration-tests/TestApp/app/src/main/java/android/databinding/testapp/vo/ViewBindingObject.java
@@ -13,13 +13,11 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package com.android.databinding.testapp.vo;
+package android.databinding.testapp.vo;
 
-import com.android.databinding.library.BaseObservable;
-import com.android.databinding.testapp.R;
-
-import android.binding.Bindable;
-import android.binding.adapters.ViewBindingAdapter;
+import android.databinding.Bindable;
+import android.databinding.adapters.ViewBindingAdapter;
+import android.databinding.testapp.R;
 import android.view.View;
 
 public class ViewBindingObject extends BindingAdapterBindingObject {
diff --git a/integration-tests/TestApp/app/src/main/java/com/android/databinding/testapp/vo/ViewGroupBindingObject.java b/integration-tests/TestApp/app/src/main/java/android/databinding/testapp/vo/ViewGroupBindingObject.java
similarity index 91%
rename from integration-tests/TestApp/app/src/main/java/com/android/databinding/testapp/vo/ViewGroupBindingObject.java
rename to integration-tests/TestApp/app/src/main/java/android/databinding/testapp/vo/ViewGroupBindingObject.java
index f0ee752..107fec6 100644
--- a/integration-tests/TestApp/app/src/main/java/com/android/databinding/testapp/vo/ViewGroupBindingObject.java
+++ b/integration-tests/TestApp/app/src/main/java/android/databinding/testapp/vo/ViewGroupBindingObject.java
@@ -13,11 +13,9 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package com.android.databinding.testapp.vo;
+package android.databinding.testapp.vo;
 
-import com.android.databinding.library.BaseObservable;
-
-import android.binding.Bindable;
+import android.databinding.Bindable;
 
 public class ViewGroupBindingObject extends BindingAdapterBindingObject {
     @Bindable
diff --git a/integration-tests/TestApp/app/src/main/java/com/android/databinding/testapp/vo/ViewStubBindingObject.java b/integration-tests/TestApp/app/src/main/java/android/databinding/testapp/vo/ViewStubBindingObject.java
similarity index 84%
rename from integration-tests/TestApp/app/src/main/java/com/android/databinding/testapp/vo/ViewStubBindingObject.java
rename to integration-tests/TestApp/app/src/main/java/android/databinding/testapp/vo/ViewStubBindingObject.java
index 5b0774f..3e88e91 100644
--- a/integration-tests/TestApp/app/src/main/java/com/android/databinding/testapp/vo/ViewStubBindingObject.java
+++ b/integration-tests/TestApp/app/src/main/java/android/databinding/testapp/vo/ViewStubBindingObject.java
@@ -13,12 +13,10 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package com.android.databinding.testapp.vo;
+package android.databinding.testapp.vo;
 
-import com.android.databinding.library.BaseObservable;
-import com.android.databinding.testapp.R;
-
-import android.binding.Bindable;
+import android.databinding.Bindable;
+import android.databinding.testapp.R;
 
 public class ViewStubBindingObject extends BindingAdapterBindingObject {
     @Bindable
diff --git a/integration-tests/TestApp/app/src/main/res/layout-land/multi_res_layout.xml b/integration-tests/TestApp/app/src/main/res/layout-land/multi_res_layout.xml
index 5906fd1..594c3fe 100644
--- a/integration-tests/TestApp/app/src/main/res/layout-land/multi_res_layout.xml
+++ b/integration-tests/TestApp/app/src/main/res/layout-land/multi_res_layout.xml
@@ -17,7 +17,7 @@
               android:orientation="vertical"
               android:layout_width="match_parent"
               android:layout_height="match_parent">
-    <variable name="objectInLand" type="com.android.databinding.testapp.vo.NotBindableVo"/>
+    <variable name="objectInLand" type="android.databinding.testapp.vo.NotBindableVo"/>
     <TextView android:layout_width="wrap_content" android:layout_height="wrap_content"
               android:id="@+id/objectInLandTextView"
               android:text="@{objectInLand.stringValue}"/>
@@ -37,4 +37,4 @@
     <include layout="@layout/conditional_binding" android:id="@+id/includedLayoutLand"
              bind:obj2="@{objectInDefault}"
             />
-</LinearLayout>
\ No newline at end of file
+</LinearLayout>
diff --git a/integration-tests/TestApp/app/src/main/res/layout/abs_list_view_adapter_test.xml b/integration-tests/TestApp/app/src/main/res/layout/abs_list_view_adapter_test.xml
index 5f81f37..4ff0ba8 100644
--- a/integration-tests/TestApp/app/src/main/res/layout/abs_list_view_adapter_test.xml
+++ b/integration-tests/TestApp/app/src/main/res/layout/abs_list_view_adapter_test.xml
@@ -7,5 +7,5 @@
           android:scrollingCache="@{obj.scrollingCache}"
           android:smoothScrollbar="@{obj.smoothScrollbar}"
         >
-    <variable name="obj" type="com.android.databinding.testapp.vo.AbsListViewBindingObject"/>
-</ListView>
\ No newline at end of file
+    <variable name="obj" type="android.databinding.testapp.vo.AbsListViewBindingObject"/>
+</ListView>
diff --git a/integration-tests/TestApp/app/src/main/res/layout/abs_seek_bar_adapter_test.xml b/integration-tests/TestApp/app/src/main/res/layout/abs_seek_bar_adapter_test.xml
index ee1e645..0fafb2d 100644
--- a/integration-tests/TestApp/app/src/main/res/layout/abs_seek_bar_adapter_test.xml
+++ b/integration-tests/TestApp/app/src/main/res/layout/abs_seek_bar_adapter_test.xml
@@ -3,8 +3,8 @@
               android:orientation="vertical"
               android:layout_width="match_parent"
               android:layout_height="match_parent">
-    <variable name="obj" type="com.android.databinding.testapp.vo.AbsSeekBarBindingObject"/>
+    <variable name="obj" type="android.databinding.testapp.vo.AbsSeekBarBindingObject"/>
     <SeekBar android:layout_width="match_parent" android:layout_height="match_parent"
              android:id="@+id/view"
              android:thumbTint="@{obj.thumbTint}"/>
-</LinearLayout>
\ No newline at end of file
+</LinearLayout>
diff --git a/integration-tests/TestApp/app/src/main/res/layout/abs_spinner_adapter_test.xml b/integration-tests/TestApp/app/src/main/res/layout/abs_spinner_adapter_test.xml
index 840eb04..047b107 100644
--- a/integration-tests/TestApp/app/src/main/res/layout/abs_spinner_adapter_test.xml
+++ b/integration-tests/TestApp/app/src/main/res/layout/abs_spinner_adapter_test.xml
@@ -3,8 +3,8 @@
               android:orientation="vertical"
               android:layout_width="match_parent"
               android:layout_height="match_parent">
-    <variable name="obj" type="com.android.databinding.testapp.vo.AbsSpinnerBindingObject"/>
+    <variable name="obj" type="android.databinding.testapp.vo.AbsSpinnerBindingObject"/>
     <Spinner android:layout_width="match_parent" android:layout_height="match_parent"
              android:id="@+id/view"
             android:entries="@{obj.entries}"/>
-</LinearLayout>
\ No newline at end of file
+</LinearLayout>
diff --git a/integration-tests/TestApp/app/src/main/res/layout/auto_complete_text_view_adapter_test.xml b/integration-tests/TestApp/app/src/main/res/layout/auto_complete_text_view_adapter_test.xml
index 9bbbe81..b999841 100644
--- a/integration-tests/TestApp/app/src/main/res/layout/auto_complete_text_view_adapter_test.xml
+++ b/integration-tests/TestApp/app/src/main/res/layout/auto_complete_text_view_adapter_test.xml
@@ -3,9 +3,9 @@
               android:orientation="vertical"
               android:layout_width="match_parent"
               android:layout_height="match_parent">
-    <variable name="obj" type="com.android.databinding.testapp.vo.AutoCompleteTextViewBindingObject"/>
+    <variable name="obj" type="android.databinding.testapp.vo.AutoCompleteTextViewBindingObject"/>
     <AutoCompleteTextView android:layout_width="match_parent" android:layout_height="match_parent"
                           android:id="@+id/view"
                           android:completionThreshold="@{obj.completionThreshold}"
                           android:popupBackground="@{obj.popupBackground}"/>
-</LinearLayout>
\ No newline at end of file
+</LinearLayout>
diff --git a/integration-tests/TestApp/app/src/main/res/layout/basic_binding.xml b/integration-tests/TestApp/app/src/main/res/layout/basic_binding.xml
index d59f1d0..6e75fb2 100644
--- a/integration-tests/TestApp/app/src/main/res/layout/basic_binding.xml
+++ b/integration-tests/TestApp/app/src/main/res/layout/basic_binding.xml
@@ -24,4 +24,4 @@
             android:text="@{a + b}"
             android:layout_width="wrap_content"
             android:layout_height="wrap_content"/>
-</LinearLayout>
\ No newline at end of file
+</LinearLayout>
diff --git a/integration-tests/TestApp/app/src/main/res/layout/basic_dependant_binding.xml b/integration-tests/TestApp/app/src/main/res/layout/basic_dependant_binding.xml
index f6478c1..453348a 100644
--- a/integration-tests/TestApp/app/src/main/res/layout/basic_dependant_binding.xml
+++ b/integration-tests/TestApp/app/src/main/res/layout/basic_dependant_binding.xml
@@ -17,8 +17,8 @@
               android:orientation="vertical"
               android:layout_width="match_parent"
               android:layout_height="match_parent">
-    <variable name="obj1" type="com.android.databinding.testapp.vo.NotBindableVo"/>
-    <variable name="obj2" type="com.android.databinding.testapp.vo.NotBindableVo"/>
+    <variable name="obj1" type="android.databinding.testapp.vo.NotBindableVo"/>
+    <variable name="obj2" type="android.databinding.testapp.vo.NotBindableVo"/>
     <TextView
             android:id="@+id/textView1"
             android:text="@{obj1.stringValue}"
@@ -45,4 +45,4 @@
             android:text="@{obj1.stringValue + obj2.stringValue}"
             android:layout_width="wrap_content"
             android:layout_height="wrap_content"/>
-</LinearLayout>
\ No newline at end of file
+</LinearLayout>
diff --git a/integration-tests/TestApp/app/src/main/res/layout/bind_to_final.xml b/integration-tests/TestApp/app/src/main/res/layout/bind_to_final.xml
index 4bf6263..f578585 100644
--- a/integration-tests/TestApp/app/src/main/res/layout/bind_to_final.xml
+++ b/integration-tests/TestApp/app/src/main/res/layout/bind_to_final.xml
@@ -16,8 +16,8 @@
               android:orientation="vertical"
               android:layout_width="match_parent"
               android:layout_height="match_parent">
-    <variable name="obj" type="com.android.databinding.testapp.vo.PublicFinalTestVo"/>
+    <variable name="obj" type="android.databinding.testapp.vo.PublicFinalTestVo"/>
     <TextView android:layout_width="wrap_content" android:layout_height="wrap_content"
             android:id="@+id/text_view"
             android:text="@{obj.myField}"/>
-</LinearLayout>
\ No newline at end of file
+</LinearLayout>
diff --git a/integration-tests/TestApp/app/src/main/res/layout/bind_to_final_observable.xml b/integration-tests/TestApp/app/src/main/res/layout/bind_to_final_observable.xml
index 38c7cc2..15d62fe 100644
--- a/integration-tests/TestApp/app/src/main/res/layout/bind_to_final_observable.xml
+++ b/integration-tests/TestApp/app/src/main/res/layout/bind_to_final_observable.xml
@@ -16,8 +16,8 @@
               android:orientation="vertical"
               android:layout_width="match_parent"
               android:layout_height="match_parent">
-    <variable name="obj" type="com.android.databinding.testapp.vo.PublicFinalWithObservableTestVo"/>
+    <variable name="obj" type="android.databinding.testapp.vo.PublicFinalWithObservableTestVo"/>
     <TextView android:layout_width="wrap_content" android:layout_height="wrap_content"
               android:id="@+id/text_view"
               android:text="@{obj.myFinalVo.val}"/>
-</LinearLayout>
\ No newline at end of file
+</LinearLayout>
diff --git a/integration-tests/TestApp/app/src/main/res/layout/bracket_test.xml b/integration-tests/TestApp/app/src/main/res/layout/bracket_test.xml
index 07a99d1..49c2872 100644
--- a/integration-tests/TestApp/app/src/main/res/layout/bracket_test.xml
+++ b/integration-tests/TestApp/app/src/main/res/layout/bracket_test.xml
@@ -41,4 +41,4 @@
               android:id="@+id/longSparseArrayText"
               android:text='@{longSparseArray[0]}'/>
 
-</LinearLayout>
\ No newline at end of file
+</LinearLayout>
diff --git a/integration-tests/TestApp/app/src/main/res/layout/cast_test.xml b/integration-tests/TestApp/app/src/main/res/layout/cast_test.xml
index e8d3c48..803b5ee 100644
--- a/integration-tests/TestApp/app/src/main/res/layout/cast_test.xml
+++ b/integration-tests/TestApp/app/src/main/res/layout/cast_test.xml
@@ -17,4 +17,4 @@
             android:id="@+id/textView1"
             android:layout_width="wrap_content" android:layout_height="wrap_content"
             android:text="@{((Map&lt;String, String&gt;)map)[`hello`]}"/>
-</LinearLayout>
\ No newline at end of file
+</LinearLayout>
diff --git a/integration-tests/TestApp/app/src/main/res/layout/checked_text_view_adapter_test.xml b/integration-tests/TestApp/app/src/main/res/layout/checked_text_view_adapter_test.xml
index 431418b..02c50c8 100644
--- a/integration-tests/TestApp/app/src/main/res/layout/checked_text_view_adapter_test.xml
+++ b/integration-tests/TestApp/app/src/main/res/layout/checked_text_view_adapter_test.xml
@@ -3,11 +3,11 @@
               android:orientation="vertical"
               android:layout_width="match_parent"
               android:layout_height="match_parent">
-    <variable name="obj" type="com.android.databinding.testapp.vo.CheckedTextViewBindingObject"/>
+    <variable name="obj" type="android.databinding.testapp.vo.CheckedTextViewBindingObject"/>
     <CheckedTextView
             android:layout_width="match_parent" android:layout_height="match_parent"
             android:id="@+id/view"
             android:checkMark="@{obj.checkMark}"
             android:checkMarkTint="@{obj.checkMarkTint}"/>
 
-</LinearLayout>
\ No newline at end of file
+</LinearLayout>
diff --git a/integration-tests/TestApp/app/src/main/res/layout/compound_button_adapter_test.xml b/integration-tests/TestApp/app/src/main/res/layout/compound_button_adapter_test.xml
index 021b3e6..6f61825 100644
--- a/integration-tests/TestApp/app/src/main/res/layout/compound_button_adapter_test.xml
+++ b/integration-tests/TestApp/app/src/main/res/layout/compound_button_adapter_test.xml
@@ -3,9 +3,9 @@
               android:orientation="vertical"
               android:layout_width="match_parent"
               android:layout_height="match_parent">
-    <variable name="obj" type="com.android.databinding.testapp.vo.CompoundButtonBindingObject"/>
+    <variable name="obj" type="android.databinding.testapp.vo.CompoundButtonBindingObject"/>
     <CheckBox
             android:layout_width="match_parent" android:layout_height="match_parent"
             android:id="@+id/view"
             android:buttonTint="@{obj.buttonTint}"/>
-</LinearLayout>
\ No newline at end of file
+</LinearLayout>
diff --git a/integration-tests/TestApp/app/src/main/res/layout/conditional_binding.xml b/integration-tests/TestApp/app/src/main/res/layout/conditional_binding.xml
index f8d3012..70376a0 100644
--- a/integration-tests/TestApp/app/src/main/res/layout/conditional_binding.xml
+++ b/integration-tests/TestApp/app/src/main/res/layout/conditional_binding.xml
@@ -4,9 +4,9 @@
               android:orientation="vertical"
               android:layout_width="match_parent"
               android:layout_height="match_parent">
-    <variable name="obj1" type="com.android.databinding.testapp.vo.NotBindableVo"/>
-    <variable name="obj2" type="com.android.databinding.testapp.vo.NotBindableVo"/>
-    <variable name="obj3" type="com.android.databinding.testapp.vo.NotBindableVo"/>
+    <variable name="obj1" type="android.databinding.testapp.vo.NotBindableVo"/>
+    <variable name="obj2" type="android.databinding.testapp.vo.NotBindableVo"/>
+    <variable name="obj3" type="android.databinding.testapp.vo.NotBindableVo"/>
     <variable name="cond1" type="boolean"/>
     <variable name="cond2" type="boolean"/>
     <TextView
@@ -14,4 +14,4 @@
             android:text="@{cond1 ? cond2 ? obj1.stringValue : obj2.stringValue : obj3.stringValue}"
             android:layout_width="wrap_content"
             android:layout_height="wrap_content"/>
-</LinearLayout>
\ No newline at end of file
+</LinearLayout>
diff --git a/integration-tests/TestApp/app/src/main/res/layout/find_method_test.xml b/integration-tests/TestApp/app/src/main/res/layout/find_method_test.xml
index 4b2ce66..c65ee39 100644
--- a/integration-tests/TestApp/app/src/main/res/layout/find_method_test.xml
+++ b/integration-tests/TestApp/app/src/main/res/layout/find_method_test.xml
@@ -3,11 +3,11 @@
               android:orientation="vertical"
               android:layout_width="match_parent"
               android:layout_height="match_parent">
-    <variable name="obj" type="com.android.databinding.testapp.vo.FindMethodBindingObject"/>
-    <import type="com.android.databinding.testapp.vo.FindMethodBindingObject.Bar"/>
+    <variable name="obj" type="android.databinding.testapp.vo.FindMethodBindingObject"/>
+    <import type="android.databinding.testapp.vo.FindMethodBindingObject.Bar"/>
     <variable name="obj2" type="Bar&lt;String&gt;"/>
-    <import type="com.android.databinding.testapp.vo.FindMethodBindingObject"/>
-    <import type="com.android.databinding.testapp.vo.FindMethodBindingObject" alias="FMBO"/>
+    <import type="android.databinding.testapp.vo.FindMethodBindingObject"/>
+    <import type="android.databinding.testapp.vo.FindMethodBindingObject" alias="FMBO"/>
     <TextView
             android:id="@+id/textView0"
             android:layout_width="wrap_content" android:layout_height="wrap_content"
@@ -39,11 +39,11 @@
     <TextView
             android:id="@+id/textView7"
             android:layout_width="wrap_content" android:layout_height="wrap_content"
-            android:text="@{com.android.databinding.testapp.vo.FindMethodBindingObject.staticMethod()}"/>
+            android:text="@{android.databinding.testapp.vo.FindMethodBindingObject.staticMethod()}"/>
     <TextView
             android:id="@+id/textView8"
             android:layout_width="wrap_content" android:layout_height="wrap_content"
-            android:text="@{com.android.databinding.testapp.vo.FindMethodBindingObject.foo.bar}"/>
+            android:text="@{android.databinding.testapp.vo.FindMethodBindingObject.foo.bar}"/>
     <TextView
             android:id="@+id/textView9"
             android:layout_width="wrap_content" android:layout_height="wrap_content"
@@ -99,4 +99,4 @@
             android:id="@+id/textView21"
             android:layout_width="wrap_content" android:layout_height="wrap_content"
             android:text="@{obj.getList()[0]}"/>
-</LinearLayout>
\ No newline at end of file
+</LinearLayout>
diff --git a/integration-tests/TestApp/app/src/main/res/layout/frame_layout_adapter_test.xml b/integration-tests/TestApp/app/src/main/res/layout/frame_layout_adapter_test.xml
index 253287b..7c9b860 100644
--- a/integration-tests/TestApp/app/src/main/res/layout/frame_layout_adapter_test.xml
+++ b/integration-tests/TestApp/app/src/main/res/layout/frame_layout_adapter_test.xml
@@ -3,9 +3,9 @@
               android:orientation="vertical"
               android:layout_width="match_parent"
               android:layout_height="match_parent">
-    <variable name="obj" type="com.android.databinding.testapp.vo.FrameLayoutBindingObject"/>
+    <variable name="obj" type="android.databinding.testapp.vo.FrameLayoutBindingObject"/>
     <FrameLayout
             android:layout_width="match_parent" android:layout_height="match_parent"
             android:id="@+id/view"
             android:foregroundTint="@{obj.foregroundTint}"/>
-</LinearLayout>
\ No newline at end of file
+</LinearLayout>
diff --git a/integration-tests/TestApp/app/src/main/res/layout/image_view_adapter_test.xml b/integration-tests/TestApp/app/src/main/res/layout/image_view_adapter_test.xml
index c79c8fc..a3ce7f4 100644
--- a/integration-tests/TestApp/app/src/main/res/layout/image_view_adapter_test.xml
+++ b/integration-tests/TestApp/app/src/main/res/layout/image_view_adapter_test.xml
@@ -3,7 +3,7 @@
               android:orientation="vertical"
               android:layout_width="match_parent"
               android:layout_height="match_parent">
-    <variable name="obj" type="com.android.databinding.testapp.vo.ImageViewBindingObject"/>
+    <variable name="obj" type="android.databinding.testapp.vo.ImageViewBindingObject"/>
     <ImageView
             android:layout_width="match_parent" android:layout_height="match_parent"
             android:id="@+id/view"
@@ -11,4 +11,4 @@
             android:tint="@{obj.tint}"
             android:tintMode="@{obj.tintMode}"
             />
-</LinearLayout>
\ No newline at end of file
+</LinearLayout>
diff --git a/integration-tests/TestApp/app/src/main/res/layout/included_layout.xml b/integration-tests/TestApp/app/src/main/res/layout/included_layout.xml
index 8402154..5b0bf4c 100644
--- a/integration-tests/TestApp/app/src/main/res/layout/included_layout.xml
+++ b/integration-tests/TestApp/app/src/main/res/layout/included_layout.xml
@@ -17,10 +17,10 @@
               android:orientation="vertical"
               android:layout_width="match_parent"
               android:layout_height="match_parent">
-    <variable name="innerObject" type="com.android.databinding.testapp.vo.NotBindableVo"/>
+    <variable name="innerObject" type="android.databinding.testapp.vo.NotBindableVo"/>
     <variable name="innerValue" type="java.lang.String"/>
     <TextView android:layout_width="wrap_content" android:layout_height="wrap_content"
               android:id="@+id/innerTextView"
               android:text="@{innerValue + innerObject.stringValue}"
             />
-</LinearLayout>
\ No newline at end of file
+</LinearLayout>
diff --git a/integration-tests/TestApp/app/src/main/res/layout/layout_with_include.xml b/integration-tests/TestApp/app/src/main/res/layout/layout_with_include.xml
index 626f981..5f5da5a 100644
--- a/integration-tests/TestApp/app/src/main/res/layout/layout_with_include.xml
+++ b/integration-tests/TestApp/app/src/main/res/layout/layout_with_include.xml
@@ -17,7 +17,7 @@
               android:orientation="vertical"
               android:layout_width="match_parent"
               android:layout_height="match_parent">
-    <variable name="outerObject" type="com.android.databinding.testapp.vo.NotBindableVo"/>
+    <variable name="outerObject" type="android.databinding.testapp.vo.NotBindableVo"/>
     <TextView android:layout_width="wrap_content" android:layout_height="wrap_content"
               android:id="@+id/outerTextView"
               android:text="@{outerObject.stringValue}"/>
@@ -26,4 +26,4 @@
              bind:innerObject="@{outerObject}"
              bind:innerValue="@{`modified ` + outerObject.intValue}"
             />
-</LinearLayout>
\ No newline at end of file
+</LinearLayout>
diff --git a/integration-tests/TestApp/app/src/main/res/layout/linear_layout_adapter_test.xml b/integration-tests/TestApp/app/src/main/res/layout/linear_layout_adapter_test.xml
index f5775a0..0b08f17 100644
--- a/integration-tests/TestApp/app/src/main/res/layout/linear_layout_adapter_test.xml
+++ b/integration-tests/TestApp/app/src/main/res/layout/linear_layout_adapter_test.xml
@@ -3,7 +3,7 @@
               android:orientation="vertical"
               android:layout_width="match_parent"
               android:layout_height="match_parent">
-    <variable name="obj" type="com.android.databinding.testapp.vo.LinearLayoutBindingObject"/>
+    <variable name="obj" type="android.databinding.testapp.vo.LinearLayoutBindingObject"/>
     <LinearLayout
             android:layout_width="match_parent" android:layout_height="match_parent"
             android:id="@+id/view"
@@ -11,4 +11,4 @@
             android:divider="@{obj.divider}"
             android:measureWithLargestChild="@{obj.measureWithLargestChild}"
             />
-</LinearLayout>
\ No newline at end of file
+</LinearLayout>
diff --git a/integration-tests/TestApp/app/src/main/res/layout/multi_res_layout.xml b/integration-tests/TestApp/app/src/main/res/layout/multi_res_layout.xml
index 1d153ed..99c7d81 100644
--- a/integration-tests/TestApp/app/src/main/res/layout/multi_res_layout.xml
+++ b/integration-tests/TestApp/app/src/main/res/layout/multi_res_layout.xml
@@ -17,7 +17,7 @@
               android:orientation="vertical"
               android:layout_width="match_parent"
               android:layout_height="match_parent">
-    <variable name="objectInDefault" type="com.android.databinding.testapp.vo.NotBindableVo"/>
+    <variable name="objectInDefault" type="android.databinding.testapp.vo.NotBindableVo"/>
     <TextView android:layout_width="wrap_content" android:layout_height="wrap_content"
               android:id="@+id/objectInDefaultTextView"
               android:text="@{objectInDefault.stringValue}"/>
@@ -35,4 +35,4 @@
              bind:cond1="@{objectInDefault == null}"
             />
 
-</LinearLayout>
\ No newline at end of file
+</LinearLayout>
diff --git a/integration-tests/TestApp/app/src/main/res/layout/new_api_layout.xml b/integration-tests/TestApp/app/src/main/res/layout/new_api_layout.xml
index 686676b..26c4e95 100644
--- a/integration-tests/TestApp/app/src/main/res/layout/new_api_layout.xml
+++ b/integration-tests/TestApp/app/src/main/res/layout/new_api_layout.xml
@@ -24,4 +24,4 @@
               android:layout_height="wrap_content"
               android:id="@+id/textView"
               android:text="@{name}" android:elevation="@{elevation}"/>
-</LinearLayout>
\ No newline at end of file
+</LinearLayout>
diff --git a/integration-tests/TestApp/app/src/main/res/layout/no_id_test.xml b/integration-tests/TestApp/app/src/main/res/layout/no_id_test.xml
index ec513ea..61cc652 100644
--- a/integration-tests/TestApp/app/src/main/res/layout/no_id_test.xml
+++ b/integration-tests/TestApp/app/src/main/res/layout/no_id_test.xml
@@ -14,4 +14,4 @@
               android:text="@{name}" android:tag="@string/app_name"/>
     <TextView android:layout_width="wrap_content" android:layout_height="wrap_content"
               android:text="@{name}" android:tag="@android:string/ok"/>
-</LinearLayout>
\ No newline at end of file
+</LinearLayout>
diff --git a/integration-tests/TestApp/app/src/main/res/layout/observable_field_test.xml b/integration-tests/TestApp/app/src/main/res/layout/observable_field_test.xml
index 61dff3e..1db044f 100644
--- a/integration-tests/TestApp/app/src/main/res/layout/observable_field_test.xml
+++ b/integration-tests/TestApp/app/src/main/res/layout/observable_field_test.xml
@@ -3,7 +3,7 @@
               android:orientation="vertical"
               android:layout_width="match_parent"
               android:layout_height="match_parent">
-    <variable name="obj" type="com.android.databinding.testapp.vo.ObservableFieldBindingObject"/>
+    <variable name="obj" type="android.databinding.testapp.vo.ObservableFieldBindingObject"/>
     <TextView
             android:id="@+id/bField"
             android:layout_width="wrap_content"
@@ -49,4 +49,4 @@
             android:layout_width="wrap_content"
             android:layout_height="wrap_content"
             android:text="@{obj.oField}"/>
-</LinearLayout>
\ No newline at end of file
+</LinearLayout>
diff --git a/integration-tests/TestApp/app/src/main/res/layout/observable_with_not_bindable_field.xml b/integration-tests/TestApp/app/src/main/res/layout/observable_with_not_bindable_field.xml
index 5f27399..bde2dd4 100644
--- a/integration-tests/TestApp/app/src/main/res/layout/observable_with_not_bindable_field.xml
+++ b/integration-tests/TestApp/app/src/main/res/layout/observable_with_not_bindable_field.xml
@@ -16,8 +16,8 @@
               android:orientation="vertical"
               android:layout_width="match_parent"
               android:layout_height="match_parent">
-    <variable name="obj" type="com.android.databinding.testapp.vo.ObservableWithNotBindableFieldObject"/>
+    <variable name="obj" type="android.databinding.testapp.vo.ObservableWithNotBindableFieldObject"/>
     <TextView android:layout_width="wrap_content" android:layout_height="wrap_content"
             android:id="@+id/text_view"
             android:text="@{obj.data}"/>
-</LinearLayout>
\ No newline at end of file
+</LinearLayout>
diff --git a/integration-tests/TestApp/app/src/main/res/layout/progress_bar_adapter_test.xml b/integration-tests/TestApp/app/src/main/res/layout/progress_bar_adapter_test.xml
index 0ccd17f..4fb8235 100644
--- a/integration-tests/TestApp/app/src/main/res/layout/progress_bar_adapter_test.xml
+++ b/integration-tests/TestApp/app/src/main/res/layout/progress_bar_adapter_test.xml
@@ -3,7 +3,7 @@
               android:orientation="vertical"
               android:layout_width="match_parent"
               android:layout_height="match_parent">
-    <variable name="obj" type="com.android.databinding.testapp.vo.ProgressBarBindingObject"/>
+    <variable name="obj" type="android.databinding.testapp.vo.ProgressBarBindingObject"/>
     <ProgressBar
             android:layout_width="match_parent" android:layout_height="match_parent"
             android:id="@+id/view"
@@ -11,4 +11,4 @@
             android:progressTint="@{obj.progressTint}"
             android:secondaryProgressTint="@{obj.secondaryProgressTint}"
             />
-</LinearLayout>
\ No newline at end of file
+</LinearLayout>
diff --git a/integration-tests/TestApp/app/src/main/res/layout/radio_group_adapter_test.xml b/integration-tests/TestApp/app/src/main/res/layout/radio_group_adapter_test.xml
index da20f3d..efb6038 100644
--- a/integration-tests/TestApp/app/src/main/res/layout/radio_group_adapter_test.xml
+++ b/integration-tests/TestApp/app/src/main/res/layout/radio_group_adapter_test.xml
@@ -3,7 +3,7 @@
               android:orientation="vertical"
               android:layout_width="match_parent"
               android:layout_height="match_parent">
-    <variable name="obj" type="com.android.databinding.testapp.vo.RadioGroupBindingObject"/>
+    <variable name="obj" type="android.databinding.testapp.vo.RadioGroupBindingObject"/>
     <RadioGroup
             android:layout_width="match_parent" android:layout_height="match_parent"
             android:id="@+id/view"
@@ -15,4 +15,4 @@
                      android:text="Two" android:id="@+id/choiceTwo"/>
     </RadioGroup>
 
-</LinearLayout>
\ No newline at end of file
+</LinearLayout>
diff --git a/integration-tests/TestApp/app/src/main/res/layout/resource_test.xml b/integration-tests/TestApp/app/src/main/res/layout/resource_test.xml
index dd59771..59ecc35 100644
--- a/integration-tests/TestApp/app/src/main/res/layout/resource_test.xml
+++ b/integration-tests/TestApp/app/src/main/res/layout/resource_test.xml
@@ -37,4 +37,4 @@
             android:layout_width="wrap_content"
             android:layout_height="wrap_content"
             android:text="@{`` + @fraction/myParentFraction(base, pbase)}"/>
-</LinearLayout>
\ No newline at end of file
+</LinearLayout>
diff --git a/integration-tests/TestApp/app/src/main/res/layout/spinner_adapter_test.xml b/integration-tests/TestApp/app/src/main/res/layout/spinner_adapter_test.xml
index 1c50b2e..a82e7ce 100644
--- a/integration-tests/TestApp/app/src/main/res/layout/spinner_adapter_test.xml
+++ b/integration-tests/TestApp/app/src/main/res/layout/spinner_adapter_test.xml
@@ -3,10 +3,10 @@
               android:orientation="vertical"
               android:layout_width="match_parent"
               android:layout_height="match_parent">
-    <variable name="obj" type="com.android.databinding.testapp.vo.SpinnerBindingObject"/>
+    <variable name="obj" type="android.databinding.testapp.vo.SpinnerBindingObject"/>
     <Spinner
             android:layout_width="match_parent" android:layout_height="match_parent"
             android:id="@+id/view"
             android:popupBackground="@{obj.popupBackground}"
             />
-</LinearLayout>
\ No newline at end of file
+</LinearLayout>
diff --git a/integration-tests/TestApp/app/src/main/res/layout/switch_adapter_test.xml b/integration-tests/TestApp/app/src/main/res/layout/switch_adapter_test.xml
index 6989d16..4bb1b84 100644
--- a/integration-tests/TestApp/app/src/main/res/layout/switch_adapter_test.xml
+++ b/integration-tests/TestApp/app/src/main/res/layout/switch_adapter_test.xml
@@ -3,11 +3,11 @@
               android:orientation="vertical"
               android:layout_width="match_parent"
               android:layout_height="match_parent">
-    <variable name="obj" type="com.android.databinding.testapp.vo.SwitchBindingObject"/>
+    <variable name="obj" type="android.databinding.testapp.vo.SwitchBindingObject"/>
     <Switch
             android:layout_width="match_parent" android:layout_height="match_parent"
             android:id="@+id/view"
             android:thumb="@{obj.thumb}"
             android:track="@{obj.track}"
             />
-</LinearLayout>
\ No newline at end of file
+</LinearLayout>
diff --git a/integration-tests/TestApp/app/src/main/res/layout/tab_widget_adapter_test.xml b/integration-tests/TestApp/app/src/main/res/layout/tab_widget_adapter_test.xml
index fcb9995..4167ae4 100644
--- a/integration-tests/TestApp/app/src/main/res/layout/tab_widget_adapter_test.xml
+++ b/integration-tests/TestApp/app/src/main/res/layout/tab_widget_adapter_test.xml
@@ -3,7 +3,7 @@
               android:orientation="vertical"
               android:layout_width="match_parent"
               android:layout_height="match_parent">
-    <variable name="obj" type="com.android.databinding.testapp.vo.TabWidgetBindingObject"/>
+    <variable name="obj" type="android.databinding.testapp.vo.TabWidgetBindingObject"/>
     <TabWidget android:layout_width="match_parent" android:layout_height="match_parent"
             android:id="@+id/view"
             android:divider="@{obj.divider}"
@@ -11,4 +11,4 @@
             android:tabStripLeft="@{obj.tabStripLeft}"
             android:tabStripRight="@{obj.tabStripRight}"
             />
-</LinearLayout>
\ No newline at end of file
+</LinearLayout>
diff --git a/integration-tests/TestApp/app/src/main/res/layout/table_layout_adapter_test.xml b/integration-tests/TestApp/app/src/main/res/layout/table_layout_adapter_test.xml
index 112dc9c..8d53bce 100644
--- a/integration-tests/TestApp/app/src/main/res/layout/table_layout_adapter_test.xml
+++ b/integration-tests/TestApp/app/src/main/res/layout/table_layout_adapter_test.xml
@@ -3,7 +3,7 @@
               android:orientation="vertical"
               android:layout_width="match_parent"
               android:layout_height="match_parent">
-    <variable name="obj" type="com.android.databinding.testapp.vo.TableLayoutBindingObject"/>
+    <variable name="obj" type="android.databinding.testapp.vo.TableLayoutBindingObject"/>
     <TableLayout
             android:layout_width="match_parent" android:layout_height="match_parent"
             android:id="@+id/view"
@@ -29,4 +29,4 @@
                       android:text="World"/>
         </TableRow>
     </TableLayout>
-</LinearLayout>
\ No newline at end of file
+</LinearLayout>
diff --git a/integration-tests/TestApp/app/src/main/res/layout/text_view_adapter_test.xml b/integration-tests/TestApp/app/src/main/res/layout/text_view_adapter_test.xml
index c030cc7..dc6fd29 100644
--- a/integration-tests/TestApp/app/src/main/res/layout/text_view_adapter_test.xml
+++ b/integration-tests/TestApp/app/src/main/res/layout/text_view_adapter_test.xml
@@ -3,7 +3,7 @@
               android:orientation="vertical"
               android:layout_width="match_parent"
               android:layout_height="match_parent">
-    <variable name="obj" type="com.android.databinding.testapp.vo.TextViewBindingObject"/>
+    <variable name="obj" type="android.databinding.testapp.vo.TextViewBindingObject"/>
     <TextView  android:layout_width="match_parent" android:layout_height="match_parent"
                android:id="@+id/numericText"
                android:numeric="@{obj.numeric}"
@@ -66,4 +66,4 @@
                android:inputMethod="@{obj.inputMethod}"
             />
 
-</LinearLayout>
\ No newline at end of file
+</LinearLayout>
diff --git a/integration-tests/TestApp/app/src/main/res/layout/view_adapter_test.xml b/integration-tests/TestApp/app/src/main/res/layout/view_adapter_test.xml
index 037869f..73660ce 100644
--- a/integration-tests/TestApp/app/src/main/res/layout/view_adapter_test.xml
+++ b/integration-tests/TestApp/app/src/main/res/layout/view_adapter_test.xml
@@ -4,7 +4,7 @@
               android:layout_width="match_parent"
               android:layout_height="match_parent"
         >
-        <variable name="obj" type="com.android.databinding.testapp.vo.ViewBindingObject"/>
+        <variable name="obj" type="android.databinding.testapp.vo.ViewBindingObject"/>
     <View
             android:id="@+id/padding"
             android:layout_width="10dp"
@@ -70,4 +70,4 @@
             android:transformPivotY="@{obj.transformPivotY}"
             android:layout_width="10dp"
             android:layout_height="10dp"/>
-</LinearLayout>
\ No newline at end of file
+</LinearLayout>
diff --git a/integration-tests/TestApp/app/src/main/res/layout/view_group_adapter_test.xml b/integration-tests/TestApp/app/src/main/res/layout/view_group_adapter_test.xml
index 36f9dca..af40a27 100644
--- a/integration-tests/TestApp/app/src/main/res/layout/view_group_adapter_test.xml
+++ b/integration-tests/TestApp/app/src/main/res/layout/view_group_adapter_test.xml
@@ -3,7 +3,7 @@
               android:orientation="vertical"
               android:layout_width="match_parent"
               android:layout_height="match_parent">
-    <variable name="obj" type="com.android.databinding.testapp.vo.ViewGroupBindingObject"/>
+    <variable name="obj" type="android.databinding.testapp.vo.ViewGroupBindingObject"/>
     <FrameLayout android:layout_width="match_parent"
                  android:layout_height="match_parent"
                  android:id="@+id/view"
@@ -12,4 +12,4 @@
                  android:splitMotionEvents="@{obj.splitMotionEvents}"
                  android:animateLayoutChanges="@{obj.animateLayoutChanges}"
             />
-</LinearLayout>
\ No newline at end of file
+</LinearLayout>
diff --git a/integration-tests/TestApp/app/src/main/res/layout/view_stub_adapter_test.xml b/integration-tests/TestApp/app/src/main/res/layout/view_stub_adapter_test.xml
index 3011883..e0b922b 100644
--- a/integration-tests/TestApp/app/src/main/res/layout/view_stub_adapter_test.xml
+++ b/integration-tests/TestApp/app/src/main/res/layout/view_stub_adapter_test.xml
@@ -3,8 +3,8 @@
               android:orientation="vertical"
               android:layout_width="match_parent"
               android:layout_height="match_parent">
-    <variable name="obj" type="com.android.databinding.testapp.vo.ViewStubBindingObject"/>
+    <variable name="obj" type="android.databinding.testapp.vo.ViewStubBindingObject"/>
     <ViewStub android:layout_width="match_parent" android:layout_height="match_parent"
             android:id="@+id/view"
             android:layout="@{obj.layout}"/>
-</LinearLayout>
\ No newline at end of file
+</LinearLayout>
diff --git a/library/src/main/java/com/android/databinding/library/BaseObservable.java b/library/src/main/java/android/databinding/BaseObservable.java
similarity index 90%
rename from library/src/main/java/com/android/databinding/library/BaseObservable.java
rename to library/src/main/java/android/databinding/BaseObservable.java
index 60ac348..3aa9d35 100644
--- a/library/src/main/java/com/android/databinding/library/BaseObservable.java
+++ b/library/src/main/java/android/databinding/BaseObservable.java
@@ -14,11 +14,7 @@
  * limitations under the License.
  */
 
-package com.android.databinding.library;
-
-import android.binding.Bindable;
-import android.binding.Observable;
-import android.binding.OnPropertyChangedListener;
+package android.databinding;
 
 public class BaseObservable implements Observable {
     private PropertyChangeRegistry mCallbacks;
diff --git a/library/src/main/java/com/android/databinding/library/DataBinderMapper.java b/library/src/main/java/android/databinding/DataBinderMapper.java
similarity index 94%
rename from library/src/main/java/com/android/databinding/library/DataBinderMapper.java
rename to library/src/main/java/android/databinding/DataBinderMapper.java
index 6d17356..ff6eec4 100644
--- a/library/src/main/java/com/android/databinding/library/DataBinderMapper.java
+++ b/library/src/main/java/android/databinding/DataBinderMapper.java
@@ -14,7 +14,7 @@
  * limitations under the License.
  */
 
-package com.android.databinding.library;
+package android.databinding;
 
 import android.view.View;
 
diff --git a/library/src/main/java/com/android/databinding/library/DataBindingUtil.java b/library/src/main/java/android/databinding/DataBindingUtil.java
similarity index 92%
rename from library/src/main/java/com/android/databinding/library/DataBindingUtil.java
rename to library/src/main/java/android/databinding/DataBindingUtil.java
index e5ba9b6..7f30097 100644
--- a/library/src/main/java/com/android/databinding/library/DataBindingUtil.java
+++ b/library/src/main/java/android/databinding/DataBindingUtil.java
@@ -14,7 +14,7 @@
  * limitations under the License.
  */
 
-package com.android.databinding.library;
+package android.databinding;
 
 import android.content.Context;
 import android.view.LayoutInflater;
@@ -33,7 +33,7 @@
         }
         try {
             sMapper = (DataBinderMapper) ViewDataBinding.class.getClassLoader()
-                    .loadClass("com.android.databinding.library.GeneratedDataBinderRenderer")
+                    .loadClass("android.databinding.GeneratedDataBinderRenderer")
                     .newInstance();
         } catch (Throwable t) {
             throw new RuntimeException(t);
diff --git a/library/src/main/java/com/android/databinding/library/ListChangeRegistry.java b/library/src/main/java/android/databinding/ListChangeRegistry.java
similarity index 95%
rename from library/src/main/java/com/android/databinding/library/ListChangeRegistry.java
rename to library/src/main/java/android/databinding/ListChangeRegistry.java
index 034c44a..e4c65bd 100644
--- a/library/src/main/java/com/android/databinding/library/ListChangeRegistry.java
+++ b/library/src/main/java/android/databinding/ListChangeRegistry.java
@@ -13,11 +13,8 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package com.android.databinding.library;
+package android.databinding;
 
-import android.binding.CallbackRegistry;
-import android.binding.ObservableList;
-import android.binding.OnListChangedListener;
 import android.support.v4.util.Pools;
 
 public class ListChangeRegistry
diff --git a/library/src/main/java/com/android/databinding/library/MapChangeRegistry.java b/library/src/main/java/android/databinding/MapChangeRegistry.java
similarity index 88%
rename from library/src/main/java/com/android/databinding/library/MapChangeRegistry.java
rename to library/src/main/java/android/databinding/MapChangeRegistry.java
index 0812a5c..6403cce 100644
--- a/library/src/main/java/com/android/databinding/library/MapChangeRegistry.java
+++ b/library/src/main/java/android/databinding/MapChangeRegistry.java
@@ -13,11 +13,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package com.android.databinding.library;
-
-import android.binding.CallbackRegistry;
-import android.binding.ObservableMap;
-import android.binding.OnMapChangedListener;
+package android.databinding;
 
 public class MapChangeRegistry
         extends CallbackRegistry<OnMapChangedListener, ObservableMap, Object> {
diff --git a/library/src/main/java/com/android/databinding/library/ObservableArrayList.java b/library/src/main/java/android/databinding/ObservableArrayList.java
similarity index 95%
rename from library/src/main/java/com/android/databinding/library/ObservableArrayList.java
rename to library/src/main/java/android/databinding/ObservableArrayList.java
index 7d43d08..d70bc68 100644
--- a/library/src/main/java/com/android/databinding/library/ObservableArrayList.java
+++ b/library/src/main/java/android/databinding/ObservableArrayList.java
@@ -13,10 +13,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package com.android.databinding.library;
-
-import android.binding.ObservableList;
-import android.binding.OnListChangedListener;
+package android.databinding;
 
 import java.util.ArrayList;
 import java.util.Collection;
diff --git a/library/src/main/java/com/android/databinding/library/ObservableArrayMap.java b/library/src/main/java/android/databinding/ObservableArrayMap.java
similarity index 93%
rename from library/src/main/java/com/android/databinding/library/ObservableArrayMap.java
rename to library/src/main/java/android/databinding/ObservableArrayMap.java
index 0aa01b8..c8b57b7 100644
--- a/library/src/main/java/com/android/databinding/library/ObservableArrayMap.java
+++ b/library/src/main/java/android/databinding/ObservableArrayMap.java
@@ -13,15 +13,11 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package com.android.databinding.library;
+package android.databinding;
 
-import android.binding.ObservableMap;
-import android.binding.OnMapChangedListener;
 import android.support.v4.util.ArrayMap;
-import android.support.v4.util.SimpleArrayMap;
 
 import java.util.Collection;
-import java.util.Map;
 
 public class ObservableArrayMap<K, V> extends ArrayMap<K, V> implements ObservableMap<K, V> {
 
diff --git a/library/src/main/java/com/android/databinding/library/ObservableBoolean.java b/library/src/main/java/android/databinding/ObservableBoolean.java
similarity index 95%
rename from library/src/main/java/com/android/databinding/library/ObservableBoolean.java
rename to library/src/main/java/android/databinding/ObservableBoolean.java
index 05ed9c6..afead95 100644
--- a/library/src/main/java/com/android/databinding/library/ObservableBoolean.java
+++ b/library/src/main/java/android/databinding/ObservableBoolean.java
@@ -13,7 +13,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package com.android.databinding.library;
+package android.databinding;
 
 public class ObservableBoolean extends BaseObservable {
     private boolean mValue;
diff --git a/library/src/main/java/com/android/databinding/library/ObservableByte.java b/library/src/main/java/android/databinding/ObservableByte.java
similarity index 95%
rename from library/src/main/java/com/android/databinding/library/ObservableByte.java
rename to library/src/main/java/android/databinding/ObservableByte.java
index 7ec6578..3ee73a5 100644
--- a/library/src/main/java/com/android/databinding/library/ObservableByte.java
+++ b/library/src/main/java/android/databinding/ObservableByte.java
@@ -13,7 +13,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package com.android.databinding.library;
+package android.databinding;
 
 public class ObservableByte extends BaseObservable {
     private byte mValue;
diff --git a/library/src/main/java/com/android/databinding/library/ObservableChar.java b/library/src/main/java/android/databinding/ObservableChar.java
similarity index 95%
rename from library/src/main/java/com/android/databinding/library/ObservableChar.java
rename to library/src/main/java/android/databinding/ObservableChar.java
index a7066f3..f78231c 100644
--- a/library/src/main/java/com/android/databinding/library/ObservableChar.java
+++ b/library/src/main/java/android/databinding/ObservableChar.java
@@ -13,7 +13,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package com.android.databinding.library;
+package android.databinding;
 
 public class ObservableChar extends BaseObservable {
     private char mValue;
diff --git a/library/src/main/java/com/android/databinding/library/ObservableDouble.java b/library/src/main/java/android/databinding/ObservableDouble.java
similarity index 95%
rename from library/src/main/java/com/android/databinding/library/ObservableDouble.java
rename to library/src/main/java/android/databinding/ObservableDouble.java
index 4bcadc6..ee7bd05 100644
--- a/library/src/main/java/com/android/databinding/library/ObservableDouble.java
+++ b/library/src/main/java/android/databinding/ObservableDouble.java
@@ -13,7 +13,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package com.android.databinding.library;
+package android.databinding;
 
 public class ObservableDouble extends BaseObservable {
     private double mValue;
diff --git a/library/src/main/java/com/android/databinding/library/ObservableField.java b/library/src/main/java/android/databinding/ObservableField.java
similarity index 94%
rename from library/src/main/java/com/android/databinding/library/ObservableField.java
rename to library/src/main/java/android/databinding/ObservableField.java
index 6aaf063..05a61b7 100644
--- a/library/src/main/java/com/android/databinding/library/ObservableField.java
+++ b/library/src/main/java/android/databinding/ObservableField.java
@@ -13,7 +13,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package com.android.databinding.library;
+package android.databinding;
 
 public class ObservableField<T> extends BaseObservable {
     private T mValue;
diff --git a/library/src/main/java/com/android/databinding/library/ObservableFloat.java b/library/src/main/java/android/databinding/ObservableFloat.java
similarity index 95%
rename from library/src/main/java/com/android/databinding/library/ObservableFloat.java
rename to library/src/main/java/android/databinding/ObservableFloat.java
index eec38a8..e8a063a 100644
--- a/library/src/main/java/com/android/databinding/library/ObservableFloat.java
+++ b/library/src/main/java/android/databinding/ObservableFloat.java
@@ -13,7 +13,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package com.android.databinding.library;
+package android.databinding;
 
 public class ObservableFloat extends BaseObservable {
     private float mValue;
diff --git a/library/src/main/java/com/android/databinding/library/ObservableInt.java b/library/src/main/java/android/databinding/ObservableInt.java
similarity index 94%
rename from library/src/main/java/com/android/databinding/library/ObservableInt.java
rename to library/src/main/java/android/databinding/ObservableInt.java
index 04142c2..77140f8 100644
--- a/library/src/main/java/com/android/databinding/library/ObservableInt.java
+++ b/library/src/main/java/android/databinding/ObservableInt.java
@@ -13,7 +13,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package com.android.databinding.library;
+package android.databinding;
 
 public class ObservableInt extends BaseObservable {
     private int mValue;
diff --git a/library/src/main/java/com/android/databinding/library/ObservableLong.java b/library/src/main/java/android/databinding/ObservableLong.java
similarity index 95%
rename from library/src/main/java/com/android/databinding/library/ObservableLong.java
rename to library/src/main/java/android/databinding/ObservableLong.java
index 1be4591..b1621e1 100644
--- a/library/src/main/java/com/android/databinding/library/ObservableLong.java
+++ b/library/src/main/java/android/databinding/ObservableLong.java
@@ -13,7 +13,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package com.android.databinding.library;
+package android.databinding;
 
 public class ObservableLong extends BaseObservable {
     private long mValue;
diff --git a/library/src/main/java/com/android/databinding/library/ObservableShort.java b/library/src/main/java/android/databinding/ObservableShort.java
similarity index 95%
rename from library/src/main/java/com/android/databinding/library/ObservableShort.java
rename to library/src/main/java/android/databinding/ObservableShort.java
index 74bd4eb..6d46705 100644
--- a/library/src/main/java/com/android/databinding/library/ObservableShort.java
+++ b/library/src/main/java/android/databinding/ObservableShort.java
@@ -13,7 +13,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package com.android.databinding.library;
+package android.databinding;
 
 public class ObservableShort extends BaseObservable {
     private short mValue;
diff --git a/library/src/main/java/com/android/databinding/library/PropertyChangeRegistry.java b/library/src/main/java/android/databinding/PropertyChangeRegistry.java
similarity index 88%
rename from library/src/main/java/com/android/databinding/library/PropertyChangeRegistry.java
rename to library/src/main/java/android/databinding/PropertyChangeRegistry.java
index 5fe43bc..c675c39 100644
--- a/library/src/main/java/com/android/databinding/library/PropertyChangeRegistry.java
+++ b/library/src/main/java/android/databinding/PropertyChangeRegistry.java
@@ -13,11 +13,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package com.android.databinding.library;
-
-import android.binding.CallbackRegistry;
-import android.binding.Observable;
-import android.binding.OnPropertyChangedListener;
+package android.databinding;
 
 public class PropertyChangeRegistry extends
         CallbackRegistry<OnPropertyChangedListener, Observable, Void> {
diff --git a/library/src/main/java/com/android/databinding/library/ViewDataBinding.java b/library/src/main/java/android/databinding/ViewDataBinding.java
similarity index 96%
rename from library/src/main/java/com/android/databinding/library/ViewDataBinding.java
rename to library/src/main/java/android/databinding/ViewDataBinding.java
index e008329..6cc2857 100644
--- a/library/src/main/java/com/android/databinding/library/ViewDataBinding.java
+++ b/library/src/main/java/android/databinding/ViewDataBinding.java
@@ -14,25 +14,14 @@
  * limitations under the License.
  */
 
-package com.android.databinding.library;
+package android.databinding;
 
-import android.binding.Observable;
-import android.binding.ObservableList;
-import android.binding.ObservableMap;
-import android.binding.OnListChangedListener;
-import android.binding.OnMapChangedListener;
-import android.binding.OnPropertyChangedListener;
-import android.content.Context;
-import android.os.Build;
 import android.os.Build.VERSION;
 import android.os.Build.VERSION_CODES;
 import android.util.SparseIntArray;
-import android.view.LayoutInflater;
 import android.view.View;
 import android.view.ViewGroup;
 
-import java.lang.Override;
-import java.lang.Runnable;
 import java.lang.ref.WeakReference;
 
 public abstract class ViewDataBinding {
@@ -125,7 +114,7 @@
      * Called when an observed object changes. Sets the appropriate dirty flag if applicable.
      * @param localFieldId The index into mLocalFieldObservers that this Object resides in.
      * @param object The object that has changed.
-     * @param fieldId The android.binding.BR ID of the field being changed or _all if
+     * @param fieldId The BR ID of the field being changed or _all if
      *                no specific field is being notified.
      * @return true if this change should cause a change to the UI.
      */
diff --git a/samples/BindingDemo/app/src/main/java/com/android/example/bindingdemo/DataBoundAdapter.java b/samples/BindingDemo/app/src/main/java/com/android/example/bindingdemo/DataBoundAdapter.java
index 0f4abaa..89eef68 100644
--- a/samples/BindingDemo/app/src/main/java/com/android/example/bindingdemo/DataBoundAdapter.java
+++ b/samples/BindingDemo/app/src/main/java/com/android/example/bindingdemo/DataBoundAdapter.java
@@ -3,8 +3,8 @@
 import android.support.v7.widget.RecyclerView;
 import android.view.ViewGroup;
 
-import com.android.databinding.library.DataBindingUtil;
-import com.android.databinding.library.ViewDataBinding;
+import android.databinding.DataBindingUtil;
+import android.databinding.ViewDataBinding;
 
 abstract public class DataBoundAdapter<T extends ViewDataBinding>
         extends RecyclerView.Adapter<DataBoundAdapter.DataBoundViewHolder<T>> {
diff --git a/samples/BindingDemo/app/src/main/java/com/android/example/bindingdemo/MainActivity.java b/samples/BindingDemo/app/src/main/java/com/android/example/bindingdemo/MainActivity.java
index aa7661a..54df3f1 100644
--- a/samples/BindingDemo/app/src/main/java/com/android/example/bindingdemo/MainActivity.java
+++ b/samples/BindingDemo/app/src/main/java/com/android/example/bindingdemo/MainActivity.java
@@ -1,9 +1,8 @@
 package com.android.example.bindingdemo;
 
-import android.binding.Bindable;
-import android.binding.BinderBundle;
-import android.binding.Observable;
-import android.binding.OnPropertyChangedListener;
+import android.databinding.Bindable;
+import android.databinding.Observable;
+import android.databinding.OnPropertyChangedListener;
 import android.support.v7.app.ActionBarActivity;
 import android.os.Bundle;
 import android.support.v7.widget.LinearLayoutManager;
@@ -13,8 +12,8 @@
 import android.view.View;
 import android.view.ViewGroup;
 
-import com.android.databinding.library.DataBindingUtil;
-import com.android.databinding.library.PropertyChangeRegistry;
+import android.databinding.DataBindingUtil;
+import android.databinding.PropertyChangeRegistry;
 import com.android.example.bindingdemo.generated.ListItemBinding;
 import com.android.example.bindingdemo.generated.MainActivityBinding;
 import com.android.example.bindingdemo.vo.User;
diff --git a/samples/BindingDemo/app/src/main/java/com/android/example/bindingdemo/vo/User.java b/samples/BindingDemo/app/src/main/java/com/android/example/bindingdemo/vo/User.java
index 9252321..5b7e5c7 100644
--- a/samples/BindingDemo/app/src/main/java/com/android/example/bindingdemo/vo/User.java
+++ b/samples/BindingDemo/app/src/main/java/com/android/example/bindingdemo/vo/User.java
@@ -1,9 +1,9 @@
 package com.android.example.bindingdemo.vo;
 
-import android.binding.Bindable;
+import android.databinding.Bindable;
 import android.graphics.Color;
 
-import com.android.databinding.library.BaseObservable;
+import android.databinding.BaseObservable;
 import com.android.example.bindingdemo.BR;
 
 import java.util.Objects;
diff --git a/samples/BindingDemo/app/src/main/res/layout/list_item.xml b/samples/BindingDemo/app/src/main/res/layout/list_item.xml
index ea0ddd3..1aaf2f0 100644
--- a/samples/BindingDemo/app/src/main/res/layout/list_item.xml
+++ b/samples/BindingDemo/app/src/main/res/layout/list_item.xml
@@ -43,4 +43,4 @@
         android:text='@{user.name.substring(0,1).toUpperCase() + "." + user.lastName}'
         android:layout_width="wrap_content"
         android:layout_height="match_parent" />
-</android.support.v7.widget.CardView>
\ No newline at end of file
+</android.support.v7.widget.CardView>
diff --git a/samples/BindingDemo/app/src/test/java/com/android/example/bindingdemo/vo/UnitTest.java b/samples/BindingDemo/app/src/test/java/com/android/example/bindingdemo/vo/UnitTest.java
index 7f0ba3a..65449ce 100644
--- a/samples/BindingDemo/app/src/test/java/com/android/example/bindingdemo/vo/UnitTest.java
+++ b/samples/BindingDemo/app/src/test/java/com/android/example/bindingdemo/vo/UnitTest.java
@@ -1,6 +1,6 @@
 package com.android.example.bindingdemo.vo;
 
-import android.binding.OnPropertyChangedListener;
+import android.databinding.OnPropertyChangedListener;
 
 import com.android.example.bindingdemo.R;
 
@@ -37,4 +37,4 @@
         verify(mockListener).onPropertyChanged(testUser, BR.name);
         verifyNoMoreInteractions(mockListener);
     }
-}
\ No newline at end of file
+}
diff --git a/xmlGrammar/build.gradle b/xmlGrammar/build.gradle
index 2ae83fc..c9d3607 100644
--- a/xmlGrammar/build.gradle
+++ b/xmlGrammar/build.gradle
@@ -25,8 +25,7 @@
 
 
 run {
-////    args "XMLLexer.g4", "-visitor", "-o", "src/main/java-gen/com/android/databinding", "-package", "com.android.databinding", "-lib", "."
-    args "XMLParser.g4", "-visitor", "-o", "src/main/java/com/android/databinding", "-package", "com.android.databinding", "-lib", "."
+    args "XMLParser.g4", "-visitor", "-o", "src/main/java/android/databinding/parser", "-package", "android.databinding.parser", "-lib", "."
 }
 
 dependencies {
diff --git a/xmlGrammar/src/main/java/com/android/databinding/XMLLexer.java b/xmlGrammar/src/main/java/android/databinding/parser/XMLLexer.java
similarity index 96%
rename from xmlGrammar/src/main/java/com/android/databinding/XMLLexer.java
rename to xmlGrammar/src/main/java/android/databinding/parser/XMLLexer.java
index 5d85641..b8c79bb 100644
--- a/xmlGrammar/src/main/java/com/android/databinding/XMLLexer.java
+++ b/xmlGrammar/src/main/java/android/databinding/parser/XMLLexer.java
@@ -1,13 +1,11 @@
 // Generated from XMLLexer.g4 by ANTLR 4.4
-package com.android.databinding;
-import org.antlr.v4.runtime.Lexer;
+package android.databinding.parser;
+
 import org.antlr.v4.runtime.CharStream;
-import org.antlr.v4.runtime.Token;
-import org.antlr.v4.runtime.TokenStream;
-import org.antlr.v4.runtime.*;
-import org.antlr.v4.runtime.atn.*;
-import org.antlr.v4.runtime.dfa.DFA;
-import org.antlr.v4.runtime.misc.*;
+import org.antlr.v4.runtime.Lexer;
+import org.antlr.v4.runtime.atn.ATN;
+import org.antlr.v4.runtime.atn.ATNDeserializer;
+import org.antlr.v4.runtime.atn.LexerATNSimulator;
 
 public class XMLLexer extends Lexer {
 	public static final int
diff --git a/xmlGrammar/src/main/java/com/android/databinding/XMLLexer.tokens b/xmlGrammar/src/main/java/android/databinding/parser/XMLLexer.tokens
similarity index 100%
rename from xmlGrammar/src/main/java/com/android/databinding/XMLLexer.tokens
rename to xmlGrammar/src/main/java/android/databinding/parser/XMLLexer.tokens
diff --git a/xmlGrammar/src/main/java/com/android/databinding/XMLParser.java b/xmlGrammar/src/main/java/android/databinding/parser/XMLParser.java
similarity index 99%
rename from xmlGrammar/src/main/java/com/android/databinding/XMLParser.java
rename to xmlGrammar/src/main/java/android/databinding/parser/XMLParser.java
index a324494..f18a5f0 100644
--- a/xmlGrammar/src/main/java/com/android/databinding/XMLParser.java
+++ b/xmlGrammar/src/main/java/android/databinding/parser/XMLParser.java
@@ -1,5 +1,5 @@
 // Generated from XMLParser.g4 by ANTLR 4.4
-package com.android.databinding;
+package android.databinding.parser;
 import org.antlr.v4.runtime.atn.*;
 import org.antlr.v4.runtime.dfa.DFA;
 import org.antlr.v4.runtime.*;
diff --git a/xmlGrammar/src/main/java/com/android/databinding/XMLParser.tokens b/xmlGrammar/src/main/java/android/databinding/parser/XMLParser.tokens
similarity index 100%
rename from xmlGrammar/src/main/java/com/android/databinding/XMLParser.tokens
rename to xmlGrammar/src/main/java/android/databinding/parser/XMLParser.tokens
diff --git a/xmlGrammar/src/main/java/com/android/databinding/XMLParserBaseListener.java b/xmlGrammar/src/main/java/android/databinding/parser/XMLParserBaseListener.java
similarity index 98%
rename from xmlGrammar/src/main/java/com/android/databinding/XMLParserBaseListener.java
rename to xmlGrammar/src/main/java/android/databinding/parser/XMLParserBaseListener.java
index 9c43842..4c2bae2 100644
--- a/xmlGrammar/src/main/java/com/android/databinding/XMLParserBaseListener.java
+++ b/xmlGrammar/src/main/java/android/databinding/parser/XMLParserBaseListener.java
@@ -1,5 +1,5 @@
 // Generated from XMLParser.g4 by ANTLR 4.4
-package com.android.databinding;
+package android.databinding.parser;
 
 import org.antlr.v4.runtime.ParserRuleContext;
 import org.antlr.v4.runtime.Token;
diff --git a/xmlGrammar/src/main/java/com/android/databinding/XMLParserBaseVisitor.java b/xmlGrammar/src/main/java/android/databinding/parser/XMLParserBaseVisitor.java
similarity index 98%
rename from xmlGrammar/src/main/java/com/android/databinding/XMLParserBaseVisitor.java
rename to xmlGrammar/src/main/java/android/databinding/parser/XMLParserBaseVisitor.java
index 91d18e7..6b04b77 100644
--- a/xmlGrammar/src/main/java/com/android/databinding/XMLParserBaseVisitor.java
+++ b/xmlGrammar/src/main/java/android/databinding/parser/XMLParserBaseVisitor.java
@@ -1,5 +1,5 @@
 // Generated from XMLParser.g4 by ANTLR 4.4
-package com.android.databinding;
+package android.databinding.parser;
 import org.antlr.v4.runtime.Token;
 import org.antlr.v4.runtime.misc.NotNull;
 import org.antlr.v4.runtime.tree.AbstractParseTreeVisitor;
diff --git a/xmlGrammar/src/main/java/com/android/databinding/XMLParserListener.java b/xmlGrammar/src/main/java/android/databinding/parser/XMLParserListener.java
similarity index 98%
rename from xmlGrammar/src/main/java/com/android/databinding/XMLParserListener.java
rename to xmlGrammar/src/main/java/android/databinding/parser/XMLParserListener.java
index b5499a6..6bee172 100644
--- a/xmlGrammar/src/main/java/com/android/databinding/XMLParserListener.java
+++ b/xmlGrammar/src/main/java/android/databinding/parser/XMLParserListener.java
@@ -1,5 +1,5 @@
 // Generated from XMLParser.g4 by ANTLR 4.4
-package com.android.databinding;
+package android.databinding.parser;
 import org.antlr.v4.runtime.Token;
 import org.antlr.v4.runtime.misc.NotNull;
 import org.antlr.v4.runtime.tree.ParseTreeListener;
diff --git a/xmlGrammar/src/main/java/com/android/databinding/XMLParserVisitor.java b/xmlGrammar/src/main/java/android/databinding/parser/XMLParserVisitor.java
similarity index 97%
rename from xmlGrammar/src/main/java/com/android/databinding/XMLParserVisitor.java
rename to xmlGrammar/src/main/java/android/databinding/parser/XMLParserVisitor.java
index 58a65f4..6a76a00 100644
--- a/xmlGrammar/src/main/java/com/android/databinding/XMLParserVisitor.java
+++ b/xmlGrammar/src/main/java/android/databinding/parser/XMLParserVisitor.java
@@ -1,5 +1,5 @@
 // Generated from XMLParser.g4 by ANTLR 4.4
-package com.android.databinding;
+package android.databinding.parser;
 import org.antlr.v4.runtime.Token;
 import org.antlr.v4.runtime.misc.NotNull;
 import org.antlr.v4.runtime.tree.ParseTreeVisitor;
diff --git a/xmlGrammar/src/main/kotlin/xmlEditorTest.kt b/xmlGrammar/src/main/kotlin/xmlEditorTest.kt
index 98bc8eb..48356ad 100644
--- a/xmlGrammar/src/main/kotlin/xmlEditorTest.kt
+++ b/xmlGrammar/src/main/kotlin/xmlEditorTest.kt
@@ -13,7 +13,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package com.android.databinding
+package android.databinding.parser
 
 import java.io.File
 import org.antlr.v4.runtime.ANTLRInputStream
