diff --git a/baseLibrary/build.gradle b/baseLibrary/build.gradle
index e1579be..4d55c59 100644
--- a/baseLibrary/build.gradle
+++ b/baseLibrary/build.gradle
@@ -16,7 +16,7 @@
 
 apply plugin: 'java'
 apply plugin: 'application'
-apply plugin: 'com.android.databinding.bintray'
+
 sourceCompatibility = dataBindingConfig.javaTargetCompatibility
 targetCompatibility = dataBindingConfig.javaSourceCompatibility
 
@@ -37,25 +37,6 @@
     testCompile 'junit:junit:4.12'
 }
 
-def javadocTask = project.tasks.create(name: "javadocBaseLibrary", type: Javadoc) {
-    source sourceSets.main.allJava
-}
-
-def javadocJarTask = project.tasks.create(name: "javadocJarBaseLibrary", type: Jar) {
-    classifier = 'javadoc'
-    from 'build/docs/javadoc'
-}
-javadocJarTask.dependsOn javadocTask
-
-def sourcesJarTask = project.tasks.create(name: "sourceJarBaseLibrary", type: Jar) {
-    classifier = 'sources'
-    from sourceSets.main.java.srcDirs
-}
-
-artifacts.add('archives', javadocJarTask);
-artifacts.add('archives', sourcesJarTask);
-
-
 uploadArchives {
     repositories {
         mavenDeployer {
@@ -80,4 +61,8 @@
     rename { String fileName ->
         "databinding-baseLibrary.jar"
     }
-}
\ No newline at end of file
+}
+
+project.ext.pomName = 'Data Binding Base Library'
+project.ext.pomDesc = 'Shared library between Data Binding runtime lib and compiler'
+enablePublishing(this, true)
\ No newline at end of file
diff --git a/build.gradle b/build.gradle
index 35ce3b6..ba2a8af 100644
--- a/build.gradle
+++ b/build.gradle
@@ -1,8 +1,8 @@
+import groovy.xml.QName
 
 buildscript {
     ext.dataBindingRootFolder = project.projectDir
     apply from: 'propLoader.gradle'
-    apply from: 'supportBundle.gradle'
     ext.addRepos(repositories)
     if (ext.dataBindingConfig.addRemoteRepos) {
         dependencies {
@@ -13,20 +13,24 @@
         classpath 'net.sf.proguard:proguard-gradle:5.2.1'
     }
 }
+
 subprojects {
-    apply plugin: 'maven'
-    if (dataBindingConfig.addRemoteRepos && !dataBindingConfig.forGradlePlugin) {
-        apply plugin: 'com.android.databinding.localizemaven'
+    if (dataBindingConfig.isIndependent) {
+        apply plugin: 'maven'
+        if (dataBindingConfig.addRemoteRepos && !dataBindingConfig.forGradlePlugin) {
+            apply plugin: 'com.android.databinding.localizemaven'
+        }
+    } else {
+        apply from: "${project.projectDir}/../../buildSrc/base/baseJava.gradle"
     }
 
     if (it.name != "compilationTests") {
         group = dataBindingConfig.group
         version = dataBindingConfig.version
-        def url = (!dataBindingConfig.forGradlePlugin && dataBindingConfig.inReleaseBuild && it.name == "library") ? "file://${dataBindingConfig.sharedSupportRepoDir}" : "file://${dataBindingConfig.mavenRepoDir}"
         uploadArchives {
             repositories {
                 mavenDeployer {
-                    repository(url: url)
+                    repository(url: "file://${dataBindingConfig.mavenRepoDir}")
                 }
             }
         }
@@ -34,10 +38,8 @@
 
     buildscript {
         addRepos(repositories)
-            dependencies {
-                classpath "com.android.databinding:bintray:${dataBindingConfig.extraPluginsVersion}"
-            }
     }
+
 }
 
 if (dataBindingConfig.addRemoteRepos && !dataBindingConfig.forGradlePlugin) {
@@ -69,8 +71,6 @@
         "-PforGradlePlugin=${dataBindingConfig.forGradlePlugin ? 'true' : 'false'}"
 buildExtensionsTask.dependsOn subprojects.uploadArchives
 
-tasks['bundleSupportLib'].dependsOn buildExtensionsTask
-
 def prepareExtensionPrebuilds = project.tasks.create "prepareExtensionPrebuilds", Exec
 prepareExtensionPrebuilds.workingDir file('extensions').getAbsolutePath()
 prepareExtensionPrebuilds.commandLine './gradlew'
@@ -116,10 +116,6 @@
 
 subprojects.uploadArchives.each { it.shouldRunAfter deleteRepo  }
 subprojects.uploadArchives.each { it.shouldRunAfter deletePrebuildFolder  }
-def dataBindingPublishLocal = tasks.create(name: 'publishLocal')
-subprojects.uploadArchives.each {
-    dataBindingPublishLocal.dependsOn(it)
-}
 
 buildExtensionsTask.shouldRunAfter deleteRepo
 tasks['runTestsOfMultiModuleTestApp'].dependsOn tasks['runTestsOfIndependentLibrary']
@@ -162,13 +158,19 @@
     dependsOn createEapdataBindingConfigFile
 }
 
+def findChildByTag(node, tag) {
+    return node.children().find {
+        it.name().getLocalPart().equals(tag)
+    }
+}
+
 def fullJar(project) {
     def localizeTask = project.parent.tasks.findByName('localizeDependencies')
     if (localizeTask != null) {
         localizeTask.dependsOn project.tasks.findByName('buildLicenseNotice')
     }
 
-    if (!dataBindingConfig.runProguard) {
+    if (!dataBindingConfig.runProguard || !dataBindingConfig.inReleaseBuild) {
         return
     }
     def jarName = project.uploadArchives.repositories.mavenDeployer.pom.artifactId
@@ -263,5 +265,28 @@
                 }
             }
         }
+        outputs.upToDateWhen { false } // force it to re-run all the time.
+    }
+    project.bintrayUpload.dependsOn 'jarJarFile'
+    project.publishing.publications.mavenJava(MavenPublication) {
+            pom.withXml {
+                def deps = findChildByTag(asNode(), "dependencies")
+                if (deps == null) {
+                    throw new IllegalArgumentException("cannot find dependencies in pom file")
+                }
+                def unwanted = deps.children().findAll {
+                    def groupId = findChildByTag(it, "groupId").localText()[0]
+                    def artifactId = findChildByTag(it, "artifactId").localText()[0]
+                    def isBaseLibrary = groupId == 'com.android.databinding' &&
+                            artifactId == 'baseLibrary'
+                    def isGradle = groupId == 'com.android.tools.build' && artifactId == 'gradle'
+                    def isChardet = groupId == 'com.googlecode.juniversalchardet' &&
+                            artifactId == 'juniversalchardet'
+                    return !isBaseLibrary && !isGradle && !isChardet
+                }
+                unwanted.each {
+                    deps.remove(it)
+                }
+            }
     }
 }
diff --git a/compiler/build.gradle b/compiler/build.gradle
index c0c0111..7a7b33f 100644
--- a/compiler/build.gradle
+++ b/compiler/build.gradle
@@ -15,8 +15,6 @@
  */
 apply plugin: 'java'
 apply plugin: "kotlin"
-apply plugin: 'com.android.databinding.bintray'
-
 
 sourceCompatibility = dataBindingConfig.javaTargetCompatibility
 targetCompatibility = dataBindingConfig.javaSourceCompatibility
@@ -59,6 +57,10 @@
     }
 }
 
-fullJar(project)
 
+
+project.ext.pomName = 'Data Binding Annotation Processor'
+project.ext.pomDesc = 'The annotation processor for Data Binding. Generates binding classes for runtime.'
+enablePublishing(this, true)
+fullJar(project)
 test.enabled = !System.getProperty("java.version").startsWith("1.6")
diff --git a/compilerCommon/build.gradle b/compilerCommon/build.gradle
index 62d364d..3ca5fea 100644
--- a/compilerCommon/build.gradle
+++ b/compilerCommon/build.gradle
@@ -15,7 +15,6 @@
  */
 
 apply plugin: 'java'
-apply plugin: 'com.android.databinding.bintray'
 
 sourceCompatibility = dataBindingConfig.javaSourceCompatibility
 targetCompatibility = dataBindingConfig.javaTargetCompatibility
@@ -77,4 +76,8 @@
 }
 
 tasks['jar'].dependsOn('exportBuildVersions')
-tasks['exportBuildVersions'].dependsOn('processResources')
\ No newline at end of file
+tasks['exportBuildVersions'].dependsOn('processResources')
+
+project.ext.pomName = 'Data Binding Compiler Common'
+project.ext.pomDesc = 'Common library that can be shared between different build tools'
+enablePublishing(this, true)
\ No newline at end of file
diff --git a/developmentPlugins/bintrayPlugin/build.gradle b/developmentPlugins/bintrayPlugin/build.gradle
deleted file mode 100644
index ebc1f4b..0000000
--- a/developmentPlugins/bintrayPlugin/build.gradle
+++ /dev/null
@@ -1,33 +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.
- */
-apply plugin: 'groovy'
-
-repositories {
-    mavenCentral()
-}
-
-dependencies {
-    compile gradleApi()
-    testCompile group: 'junit', name: 'junit', version: '4.12'
-}
-
-uploadArchives {
-    repositories {
-        mavenDeployer {
-            pom.artifactId = 'bintray'
-        }
-    }
-}
\ No newline at end of file
diff --git a/developmentPlugins/bintrayPlugin/gradle/wrapper/gradle-wrapper.jar b/developmentPlugins/bintrayPlugin/gradle/wrapper/gradle-wrapper.jar
deleted file mode 100644
index 0087cd3..0000000
--- a/developmentPlugins/bintrayPlugin/gradle/wrapper/gradle-wrapper.jar
+++ /dev/null
Binary files differ
diff --git a/developmentPlugins/bintrayPlugin/gradle/wrapper/gradle-wrapper.properties b/developmentPlugins/bintrayPlugin/gradle/wrapper/gradle-wrapper.properties
deleted file mode 100644
index 72508b4..0000000
--- a/developmentPlugins/bintrayPlugin/gradle/wrapper/gradle-wrapper.properties
+++ /dev/null
@@ -1,6 +0,0 @@
-#Fri Jul 10 10:59:20 PDT 2015
-distributionBase=GRADLE_USER_HOME
-distributionPath=wrapper/dists
-zipStoreBase=GRADLE_USER_HOME
-zipStorePath=wrapper/dists
-distributionUrl=https\://services.gradle.org/distributions/gradle-2.2.1-all.zip
diff --git a/developmentPlugins/bintrayPlugin/gradlew b/developmentPlugins/bintrayPlugin/gradlew
deleted file mode 100755
index 91a7e26..0000000
--- a/developmentPlugins/bintrayPlugin/gradlew
+++ /dev/null
@@ -1,164 +0,0 @@
-#!/usr/bin/env bash
-
-##############################################################################
-##
-##  Gradle start up script for UN*X
-##
-##############################################################################
-
-# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
-DEFAULT_JVM_OPTS=""
-
-APP_NAME="Gradle"
-APP_BASE_NAME=`basename "$0"`
-
-# Use the maximum available, or set MAX_FD != -1 to use that value.
-MAX_FD="maximum"
-
-warn ( ) {
-    echo "$*"
-}
-
-die ( ) {
-    echo
-    echo "$*"
-    echo
-    exit 1
-}
-
-# OS specific support (must be 'true' or 'false').
-cygwin=false
-msys=false
-darwin=false
-case "`uname`" in
-  CYGWIN* )
-    cygwin=true
-    ;;
-  Darwin* )
-    darwin=true
-    ;;
-  MINGW* )
-    msys=true
-    ;;
-esac
-
-# For Cygwin, ensure paths are in UNIX format before anything is touched.
-if $cygwin ; then
-    [ -n "$JAVA_HOME" ] && JAVA_HOME=`cygpath --unix "$JAVA_HOME"`
-fi
-
-# Attempt to set APP_HOME
-# Resolve links: $0 may be a link
-PRG="$0"
-# Need this for relative symlinks.
-while [ -h "$PRG" ] ; do
-    ls=`ls -ld "$PRG"`
-    link=`expr "$ls" : '.*-> \(.*\)$'`
-    if expr "$link" : '/.*' > /dev/null; then
-        PRG="$link"
-    else
-        PRG=`dirname "$PRG"`"/$link"
-    fi
-done
-SAVED="`pwd`"
-cd "`dirname \"$PRG\"`/" >&-
-APP_HOME="`pwd -P`"
-cd "$SAVED" >&-
-
-CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar
-
-# Determine the Java command to use to start the JVM.
-if [ -n "$JAVA_HOME" ] ; then
-    if [ -x "$JAVA_HOME/jre/sh/java" ] ; then
-        # IBM's JDK on AIX uses strange locations for the executables
-        JAVACMD="$JAVA_HOME/jre/sh/java"
-    else
-        JAVACMD="$JAVA_HOME/bin/java"
-    fi
-    if [ ! -x "$JAVACMD" ] ; then
-        die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME
-
-Please set the JAVA_HOME variable in your environment to match the
-location of your Java installation."
-    fi
-else
-    JAVACMD="java"
-    which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
-
-Please set the JAVA_HOME variable in your environment to match the
-location of your Java installation."
-fi
-
-# Increase the maximum file descriptors if we can.
-if [ "$cygwin" = "false" -a "$darwin" = "false" ] ; then
-    MAX_FD_LIMIT=`ulimit -H -n`
-    if [ $? -eq 0 ] ; then
-        if [ "$MAX_FD" = "maximum" -o "$MAX_FD" = "max" ] ; then
-            MAX_FD="$MAX_FD_LIMIT"
-        fi
-        ulimit -n $MAX_FD
-        if [ $? -ne 0 ] ; then
-            warn "Could not set maximum file descriptor limit: $MAX_FD"
-        fi
-    else
-        warn "Could not query maximum file descriptor limit: $MAX_FD_LIMIT"
-    fi
-fi
-
-# For Darwin, add options to specify how the application appears in the dock
-if $darwin; then
-    GRADLE_OPTS="$GRADLE_OPTS \"-Xdock:name=$APP_NAME\" \"-Xdock:icon=$APP_HOME/media/gradle.icns\""
-fi
-
-# For Cygwin, switch paths to Windows format before running java
-if $cygwin ; then
-    APP_HOME=`cygpath --path --mixed "$APP_HOME"`
-    CLASSPATH=`cygpath --path --mixed "$CLASSPATH"`
-
-    # We build the pattern for arguments to be converted via cygpath
-    ROOTDIRSRAW=`find -L / -maxdepth 1 -mindepth 1 -type d 2>/dev/null`
-    SEP=""
-    for dir in $ROOTDIRSRAW ; do
-        ROOTDIRS="$ROOTDIRS$SEP$dir"
-        SEP="|"
-    done
-    OURCYGPATTERN="(^($ROOTDIRS))"
-    # Add a user-defined pattern to the cygpath arguments
-    if [ "$GRADLE_CYGPATTERN" != "" ] ; then
-        OURCYGPATTERN="$OURCYGPATTERN|($GRADLE_CYGPATTERN)"
-    fi
-    # Now convert the arguments - kludge to limit ourselves to /bin/sh
-    i=0
-    for arg in "$@" ; do
-        CHECK=`echo "$arg"|egrep -c "$OURCYGPATTERN" -`
-        CHECK2=`echo "$arg"|egrep -c "^-"`                                 ### Determine if an option
-
-        if [ $CHECK -ne 0 ] && [ $CHECK2 -eq 0 ] ; then                    ### Added a condition
-            eval `echo args$i`=`cygpath --path --ignore --mixed "$arg"`
-        else
-            eval `echo args$i`="\"$arg\""
-        fi
-        i=$((i+1))
-    done
-    case $i in
-        (0) set -- ;;
-        (1) set -- "$args0" ;;
-        (2) set -- "$args0" "$args1" ;;
-        (3) set -- "$args0" "$args1" "$args2" ;;
-        (4) set -- "$args0" "$args1" "$args2" "$args3" ;;
-        (5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;;
-        (6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;;
-        (7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;;
-        (8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;;
-        (9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;;
-    esac
-fi
-
-# Split up the JVM_OPTS And GRADLE_OPTS values into an array, following the shell quoting and substitution rules
-function splitJvmOpts() {
-    JVM_OPTS=("$@")
-}
-eval splitJvmOpts $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS
-JVM_OPTS[${#JVM_OPTS[*]}]="-Dorg.gradle.appname=$APP_BASE_NAME"
-
-exec "$JAVACMD" "${JVM_OPTS[@]}" -classpath "$CLASSPATH" org.gradle.wrapper.GradleWrapperMain "$@"
diff --git a/developmentPlugins/bintrayPlugin/gradlew.bat b/developmentPlugins/bintrayPlugin/gradlew.bat
deleted file mode 100644
index aec9973..0000000
--- a/developmentPlugins/bintrayPlugin/gradlew.bat
+++ /dev/null
@@ -1,90 +0,0 @@
-@if "%DEBUG%" == "" @echo off
-@rem ##########################################################################
-@rem
-@rem  Gradle startup script for Windows
-@rem
-@rem ##########################################################################
-
-@rem Set local scope for the variables with windows NT shell
-if "%OS%"=="Windows_NT" setlocal
-
-@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
-set DEFAULT_JVM_OPTS=
-
-set DIRNAME=%~dp0
-if "%DIRNAME%" == "" set DIRNAME=.
-set APP_BASE_NAME=%~n0
-set APP_HOME=%DIRNAME%
-
-@rem Find java.exe
-if defined JAVA_HOME goto findJavaFromJavaHome
-
-set JAVA_EXE=java.exe
-%JAVA_EXE% -version >NUL 2>&1
-if "%ERRORLEVEL%" == "0" goto init
-
-echo.
-echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
-echo.
-echo Please set the JAVA_HOME variable in your environment to match the
-echo location of your Java installation.
-
-goto fail
-
-:findJavaFromJavaHome
-set JAVA_HOME=%JAVA_HOME:"=%
-set JAVA_EXE=%JAVA_HOME%/bin/java.exe
-
-if exist "%JAVA_EXE%" goto init
-
-echo.
-echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME%
-echo.
-echo Please set the JAVA_HOME variable in your environment to match the
-echo location of your Java installation.
-
-goto fail
-
-:init
-@rem Get command-line arguments, handling Windowz variants
-
-if not "%OS%" == "Windows_NT" goto win9xME_args
-if "%@eval[2+2]" == "4" goto 4NT_args
-
-:win9xME_args
-@rem Slurp the command line arguments.
-set CMD_LINE_ARGS=
-set _SKIP=2
-
-:win9xME_args_slurp
-if "x%~1" == "x" goto execute
-
-set CMD_LINE_ARGS=%*
-goto execute
-
-:4NT_args
-@rem Get arguments from the 4NT Shell from JP Software
-set CMD_LINE_ARGS=%$
-
-:execute
-@rem Setup the command line
-
-set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar
-
-@rem Execute Gradle
-"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %CMD_LINE_ARGS%
-
-:end
-@rem End local scope for the variables with windows NT shell
-if "%ERRORLEVEL%"=="0" goto mainEnd
-
-:fail
-rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of
-rem the _cmd.exe /c_ return code!
-if  not "" == "%GRADLE_EXIT_CONSOLE%" exit 1
-exit /b 1
-
-:mainEnd
-if "%OS%"=="Windows_NT" endlocal
-
-:omega
diff --git a/developmentPlugins/bintrayPlugin/src/main/groovy/android/databinding/BintrayPlugin.groovy b/developmentPlugins/bintrayPlugin/src/main/groovy/android/databinding/BintrayPlugin.groovy
deleted file mode 100644
index fe9d1b1..0000000
--- a/developmentPlugins/bintrayPlugin/src/main/groovy/android/databinding/BintrayPlugin.groovy
+++ /dev/null
@@ -1,56 +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.
- */
-package android.databinding
-
-import org.gradle.api.Plugin
-import org.gradle.api.Project
-import org.gradle.api.publication.maven.internal.ant.DefaultGroovyMavenDeployer
-import org.gradle.api.tasks.Upload
-
-class BintrayPlugin implements Plugin<Project> {
-    public static final USER_PROP = "bintrayUser"
-    public static final API_KEY_PROP = "bintrayApiKey"
-    public static final DEFAULT_TASK_NAME = "uploadToBintray"
-
-    @Override
-    void apply(Project target) {
-        def taskName = DEFAULT_TASK_NAME
-        String user = target.getProperties().get(USER_PROP)
-        String apiKey = target.getProperties().get(API_KEY_PROP)
-        def uploadArchivesTask = target.tasks.findByName("uploadArchives")
-        if (uploadArchivesTask == null) {
-            throw new RuntimeException("Cannot find uploadArchives task in $target")
-        }
-        Upload uploadTask = uploadArchivesTask
-        def bintrayTask = target.tasks.create(taskName, UploadToBintrayTask, {
-            it.dependsOn uploadTask
-            it.apiKey = apiKey
-            it.username = user
-        })
-        target.afterEvaluate({
-            def mavenDeployerRepo = uploadTask.repositories.findByName("mavenDeployer")
-            if (mavenDeployerRepo == null) {
-                throw new RuntimeException("Cannot find maven deployer repository")
-            }
-            DefaultGroovyMavenDeployer mavenDeployer = mavenDeployerRepo
-            mavenDeployer.pom.whenConfigured({
-                bintrayTask.configureFrom(mavenDeployer)
-            })
-        })
-
-
-    }
-}
diff --git a/developmentPlugins/bintrayPlugin/src/main/groovy/android/databinding/UploadToBintrayTask.groovy b/developmentPlugins/bintrayPlugin/src/main/groovy/android/databinding/UploadToBintrayTask.groovy
deleted file mode 100644
index 0515c4e..0000000
--- a/developmentPlugins/bintrayPlugin/src/main/groovy/android/databinding/UploadToBintrayTask.groovy
+++ /dev/null
@@ -1,95 +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.
- */
-
-package android.databinding;
-
-import org.gradle.api.DefaultTask
-import org.gradle.api.artifacts.maven.MavenPom
-import org.gradle.api.file.FileCollection
-import org.gradle.api.publication.maven.internal.ant.DefaultGroovyMavenDeployer
-import org.gradle.api.tasks.Input;
-import org.gradle.api.tasks.TaskAction;
-import groovy.json.JsonSlurper;
-
-public class UploadToBintrayTask extends DefaultTask {
-    static final String API_URL = "https://api.bintray.com";
-    static final String PACKAGE_HEADER = "X-Bintray-Package"
-    static final String VERSION_HEADER = "X-Bintray-Version"
-    static final String PUBLISH_HEADER = "X-Bintray-Publish"
-    static final String OVERRIDE_HEADER = "X-Bintray-Override"
-    static final String EXPLODE_HEADER = "X-Bintray-Explode"
-    static final String CONTENT_PREFIX = "content/android/android-tools"
-    String username;
-    String apiKey;
-    String pkg;
-    String version;
-    FileCollection localFiles;
-    String mavenRepoAbsPath;
-    String targetPath;
-    public void configureFrom(DefaultGroovyMavenDeployer deployer) {
-        String repoUrl = deployer.repository.url
-        if (repoUrl == null) {
-            throw new RuntimeException("Cannot find repo url for $deployer")
-        }
-
-        def pom = deployer.pom
-        pkg = pom.groupId + "." + pom.artifactId
-        version = pom.version
-        mavenRepoAbsPath = repoUrl
-        targetPath = "${pkg.replaceAll("\\.", "/")}/${version}"
-        localFiles = project.fileTree(mavenRepoAbsPath + "/" + targetPath)
-    }
-    @TaskAction
-    public void upload() {
-        if (username == null || apiKey == null) {
-            throw new IllegalArgumentException("You should pass your bintray user and " +
-                    "api key as params e.g. ./gradlew ${BintrayPlugin.DEFAULT_TASK_NAME}" +
-                    " -P${BintrayPlugin.USER_PROP}=<my username>" +
-                    " -P${BintrayPlugin.API_KEY_PROP}=<my api key>")
-        }
-        println(log())
-        for (File localFile : localFiles) {
-            def p = ['curl', '-u', "$username:$apiKey", "-H",
-                     "$PACKAGE_HEADER: $pkg", "-H", "$VERSION_HEADER: $version",
-                     "-X", "PUT", "--data-binary", "@${localFile.getAbsolutePath()}",
-                     "$API_URL/$CONTENT_PREFIX/$targetPath/${localFile.name}"]
-            println("executing $p")
-            def execute = p.execute()
-            execute.waitFor()
-            if (execute.exitValue() != 0) {
-                throw new RuntimeException("failed to upload artifact. error: ${execute.err.text}")
-            }
-            def responseText = execute.text
-            def json = new JsonSlurper().parseText(responseText)
-            if (json.getAt("message") != "success" && json.getAt("message") != null) {
-                throw new RuntimeException("Cannot upload artifact. Error response: " +
-                        "${json.getAt("message")} ${responseText}")
-            }
-            println("uploaded $localFile")
-        }
-    }
-
-    public String log() {
-        return "UploadToBintrayTask{" +
-                "username='" + username + '\'' +
-                ", apiKey='" + apiKey + '\'' +
-                ", pkg='" + pkg + '\'' +
-                ", version='" + version + '\'' +
-                ", localFile=" + localFiles +
-                ", mavenRepo=" + mavenRepoAbsPath +
-                '}';
-    }
-}
diff --git a/developmentPlugins/bintrayPlugin/src/main/resources/META-INF/gradle-plugins/com.android.databinding.bintray.properties b/developmentPlugins/bintrayPlugin/src/main/resources/META-INF/gradle-plugins/com.android.databinding.bintray.properties
deleted file mode 100644
index 3cf2d8c..0000000
--- a/developmentPlugins/bintrayPlugin/src/main/resources/META-INF/gradle-plugins/com.android.databinding.bintray.properties
+++ /dev/null
@@ -1,17 +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.
-#
-
-implementation-class=android.databinding.BintrayPlugin
\ No newline at end of file
diff --git a/extensions/baseAdapters/build.gradle b/extensions/baseAdapters/build.gradle
index 4dfb2e1..06b967a 100644
--- a/extensions/baseAdapters/build.gradle
+++ b/extensions/baseAdapters/build.gradle
@@ -50,7 +50,6 @@
 }
 
 dependencies {
-    project(':library')
     provided 'com.android.support:support-v4:+'
     provided 'com.android.support:cardview-v7:+'
     provided 'com.android.support:appcompat-v7:+'
@@ -89,7 +88,6 @@
 uploadArchives {
     repositories {
         mavenDeployer {
-            repository(url: "file://${(!dataBindingConfig.forGradlePlugin && dataBindingConfig.inReleaseBuild) ? dataBindingConfig.sharedSupportRepoDir : dataBindingConfig.mavenRepoDir}")
             pom.artifactId = "adapters"
             pom.project {
                 licenses {
diff --git a/extensions/build.gradle b/extensions/build.gradle
index b67cd3c..0ab14be 100644
--- a/extensions/build.gradle
+++ b/extensions/build.gradle
@@ -17,9 +17,12 @@
 buildscript {
     ext.dataBindingRootFolder = new File(project.projectDir, "..")
     apply from: "${project.projectDir}/../propLoader.gradle"
+    apply from: "${project.projectDir}/../supportBundle.gradle"
     ext.addRepos(repositories)
 }
 
+def bundleSupportLibTask = tasks['bundleSupportLib']
+
 subprojects {
     apply plugin: 'maven'
     group = dataBindingConfig.group
@@ -31,8 +34,20 @@
             }
         }
     }
+    bundleSupportLibTask.dependsOn tasks['uploadArchives']
+
+    def configureOut = tasks.create(name: 'configureOut') << {
+        println("configuring out...")
+        def deployer = tasks['uploadArchives'].repositories.mavenDeployer.repository
+        println "changing ${deployer.url} to ${rootProject.ext.supportRepoOut}"
+        deployer.url = "file://${rootProject.ext.supportRepoOut}"
+    }
+    bundleSupportLibTask.dependsOn configureOut
+    tasks['uploadArchives'].mustRunAfter configureOut
+    tasks['uploadArchives'].mustRunAfter unzipRepo
 }
 
+
 task preparePrebuilds() {
 }
 
diff --git a/extensions/library/build.gradle b/extensions/library/build.gradle
index 0b5afe4..6cc9852 100644
--- a/extensions/library/build.gradle
+++ b/extensions/library/build.gradle
@@ -13,12 +13,21 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-
+import com.android.build.transform.api.QualifiedContent;
+import com.android.build.transform.api.QualifiedContent.ContentType;
+import com.android.build.transform.api.QualifiedContent.Scope;
+import com.android.build.transform.api.Transform;
+import com.android.build.transform.api.Context;
+import com.android.build.transform.api.TransformInput;
+import com.android.build.transform.api.TransformOutputProvider;
+import com.android.build.transform.api.TransformException;
+import com.android.build.gradle.internal.pipeline.TransformManager;
+import com.android.build.transform.api.Format;
 // Top-level build file where you can add dataBindingConfiguration options common to all sub-projects/modules.
 
 buildscript {
     dependencies {
-        classpath "com.android.tools.build:gradle:${dataBindingConfig.androidPublicPluginVersion}"
+        classpath "com.android.tools.build:gradle:${dataBindingConfig.androidPluginVersion}"
         // NOTE: Do not place your application dependencies here; they belong
         // in the individual module build.gradle files
     }
@@ -73,6 +82,7 @@
     def suffix = name.capitalize()
 
     def javadocTask = project.tasks.create(name: "javadoc${suffix}", type: Javadoc) {
+        source variant.javaCompile.source
         classpath = files(variant.javaCompile.classpath.files) + files(
                 "${android.sdkDirectory}/platforms/${android.compileSdkVersion}/android.jar")
     }
@@ -85,6 +95,7 @@
 
     def sourcesJarTask = project.tasks.create(name: "sourceJar${suffix}", type: Jar) {
         classifier = 'sources'
+        from android.sourceSets.main.java.srcDirs
     }
 
     artifacts.add('archives', javadocJarTask);
@@ -107,20 +118,57 @@
     }
 }
 
+class ExcludeShimTransform extends Transform {
+    Project project;
+    public ExcludeShimTransform(Project project) {
+        this.project = project;
+    }
+    public Set<ContentType> getInputTypes() {
+        return TransformManager.CONTENT_CLASS;
+    }
 
-afterEvaluate {
-    ["", "Classes"].each {
-        def task = tasks.findByName("packageRelease${it}Jar")
-        if (task != null) {
-            task.exclude('android/databinding/DataBinderMapper.*')
-            tasks["packageRelease${it}Jar"].exclude('android/databinding/DataBindingComponent.*')
-            tasks["packageDebug${it}Jar"].exclude('android/databinding/DataBinderMapper.*')
-            tasks["packageDebug${it}Jar"].exclude('android/databinding/DataBindingComponent.*')
+    public Set<Scope> getScopes() {
+        def result = new HashSet<Scope>();
+        result.add(Scope.PROJECT);
+        return result;
+    }
+
+    public Set<Scope> getReferencedScopes() {
+        return TransformManager.SCOPE_FULL_LIBRARY;
+    }
+
+    public boolean isIncremental() {
+        return false;
+    }
+
+    public String getName() {
+        return "DataBindingExcludeShimTransform";
+    }
+
+    public void transform(Context context, Collection<TransformInput> inputs,
+            Collection<TransformInput> referencedInputs,
+            TransformOutputProvider outputProvider,
+            boolean isIncremental) throws IOException, TransformException, InterruptedException {
+        inputs.each { transformInput ->
+            transformInput.getDirectoryInputs().each {
+                File outputDir = outputProvider.getContentLocation("data-binding-filtered",
+                        it.getContentTypes(), it.getScopes(), Format.DIRECTORY);
+                outputDir.delete();
+                outputDir.mkdirs();
+                FileTree tree = project.fileTree(dir: it.getFile())
+                tree.include '**/*.class'
+                tree.exclude 'android/databinding/DataBindingComponent.*'
+                tree.exclude 'android/databinding/DataBinderMapper.*'
+                tree.copy {
+                    into outputDir
+                }
+            }
         }
-
     }
 }
 
+android.registerTransform(new ExcludeShimTransform(project))
+
 task prebuildAar(type : Copy) {
     dependsOn uploadArchives
     from "$buildDir/outputs/aar/library-release.aar"
diff --git a/extensions/publishExtensions.sh b/extensions/publishExtensions.sh
new file mode 100755
index 0000000..32c032e
--- /dev/null
+++ b/extensions/publishExtensions.sh
@@ -0,0 +1,2 @@
+ #!/bin/bash
+ ./gradlew l:upArch --configure-on-demand && ./gradlew bA:upArch --configure-on-demand
diff --git a/internal-prebuilts/com/android/databinding/adapters/1.0-rc3/adapters-1.0-rc3-javadoc.jar b/internal-prebuilts/com/android/databinding/adapters/1.0-rc3/adapters-1.0-rc3-javadoc.jar
new file mode 100644
index 0000000..3c0acac
--- /dev/null
+++ b/internal-prebuilts/com/android/databinding/adapters/1.0-rc3/adapters-1.0-rc3-javadoc.jar
Binary files differ
diff --git a/internal-prebuilts/com/android/databinding/adapters/1.0-rc3/adapters-1.0-rc3-javadoc.jar.md5 b/internal-prebuilts/com/android/databinding/adapters/1.0-rc3/adapters-1.0-rc3-javadoc.jar.md5
new file mode 100644
index 0000000..01e0832
--- /dev/null
+++ b/internal-prebuilts/com/android/databinding/adapters/1.0-rc3/adapters-1.0-rc3-javadoc.jar.md5
@@ -0,0 +1 @@
+feca24e4477fba87b8593eb845cd60df
\ No newline at end of file
diff --git a/internal-prebuilts/com/android/databinding/adapters/1.0-rc3/adapters-1.0-rc3-javadoc.jar.sha1 b/internal-prebuilts/com/android/databinding/adapters/1.0-rc3/adapters-1.0-rc3-javadoc.jar.sha1
new file mode 100644
index 0000000..e02f829
--- /dev/null
+++ b/internal-prebuilts/com/android/databinding/adapters/1.0-rc3/adapters-1.0-rc3-javadoc.jar.sha1
@@ -0,0 +1 @@
+73c27a8c2ceb3283e0ff24caab4491ff10eff03d
\ No newline at end of file
diff --git a/internal-prebuilts/com/android/databinding/adapters/1.0-rc3/adapters-1.0-rc3-sources.jar b/internal-prebuilts/com/android/databinding/adapters/1.0-rc3/adapters-1.0-rc3-sources.jar
new file mode 100644
index 0000000..97ed60c
--- /dev/null
+++ b/internal-prebuilts/com/android/databinding/adapters/1.0-rc3/adapters-1.0-rc3-sources.jar
Binary files differ
diff --git a/internal-prebuilts/com/android/databinding/adapters/1.0-rc3/adapters-1.0-rc3-sources.jar.md5 b/internal-prebuilts/com/android/databinding/adapters/1.0-rc3/adapters-1.0-rc3-sources.jar.md5
new file mode 100644
index 0000000..7c9174a
--- /dev/null
+++ b/internal-prebuilts/com/android/databinding/adapters/1.0-rc3/adapters-1.0-rc3-sources.jar.md5
@@ -0,0 +1 @@
+1bbcf17edb9febc5ce467432eec6c451
\ No newline at end of file
diff --git a/internal-prebuilts/com/android/databinding/adapters/1.0-rc3/adapters-1.0-rc3-sources.jar.sha1 b/internal-prebuilts/com/android/databinding/adapters/1.0-rc3/adapters-1.0-rc3-sources.jar.sha1
new file mode 100644
index 0000000..b3e1249
--- /dev/null
+++ b/internal-prebuilts/com/android/databinding/adapters/1.0-rc3/adapters-1.0-rc3-sources.jar.sha1
@@ -0,0 +1 @@
+3dbcbe676b3b81d1b9085ced28a279bba30da2eb
\ No newline at end of file
diff --git a/internal-prebuilts/com/android/databinding/adapters/1.0-rc3/adapters-1.0-rc3.aar b/internal-prebuilts/com/android/databinding/adapters/1.0-rc3/adapters-1.0-rc3.aar
new file mode 100644
index 0000000..f646a94
--- /dev/null
+++ b/internal-prebuilts/com/android/databinding/adapters/1.0-rc3/adapters-1.0-rc3.aar
Binary files differ
diff --git a/internal-prebuilts/com/android/databinding/adapters/1.0-rc3/adapters-1.0-rc3.aar.md5 b/internal-prebuilts/com/android/databinding/adapters/1.0-rc3/adapters-1.0-rc3.aar.md5
new file mode 100644
index 0000000..dab61c0
--- /dev/null
+++ b/internal-prebuilts/com/android/databinding/adapters/1.0-rc3/adapters-1.0-rc3.aar.md5
@@ -0,0 +1 @@
+e2c580d1670caa594f617c8d1ea9b41c
\ No newline at end of file
diff --git a/internal-prebuilts/com/android/databinding/adapters/1.0-rc3/adapters-1.0-rc3.aar.sha1 b/internal-prebuilts/com/android/databinding/adapters/1.0-rc3/adapters-1.0-rc3.aar.sha1
new file mode 100644
index 0000000..38d6efc
--- /dev/null
+++ b/internal-prebuilts/com/android/databinding/adapters/1.0-rc3/adapters-1.0-rc3.aar.sha1
@@ -0,0 +1 @@
+cda5ac229c41ab2000a394eaa9e4dbf33adc8658
\ No newline at end of file
diff --git a/internal-prebuilts/com/android/databinding/adapters/1.0-rc3/adapters-1.0-rc3.pom b/internal-prebuilts/com/android/databinding/adapters/1.0-rc3/adapters-1.0-rc3.pom
new file mode 100644
index 0000000..9b99982
--- /dev/null
+++ b/internal-prebuilts/com/android/databinding/adapters/1.0-rc3/adapters-1.0-rc3.pom
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd" xmlns="http://maven.apache.org/POM/4.0.0"
+    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+  <modelVersion>4.0.0</modelVersion>
+  <groupId>com.android.databinding</groupId>
+  <artifactId>adapters</artifactId>
+  <version>1.0-rc3</version>
+  <packaging>aar</packaging>
+  <licenses>
+    <license>
+      <name>The Apache Software License, Version 2.0</name>
+      <url>http://www.apache.org/licenses/LICENSE-2.0.txt</url>
+      <distribution>repo</distribution>
+    </license>
+  </licenses>
+  <dependencies>
+    <dependency>
+      <groupId>com.android.databinding</groupId>
+      <artifactId>library</artifactId>
+      <version>1.0-rc3</version>
+      <scope>compile</scope>
+    </dependency>
+  </dependencies>
+</project>
diff --git a/internal-prebuilts/com/android/databinding/adapters/1.0-rc3/adapters-1.0-rc3.pom.md5 b/internal-prebuilts/com/android/databinding/adapters/1.0-rc3/adapters-1.0-rc3.pom.md5
new file mode 100644
index 0000000..2ef600c
--- /dev/null
+++ b/internal-prebuilts/com/android/databinding/adapters/1.0-rc3/adapters-1.0-rc3.pom.md5
@@ -0,0 +1 @@
+86843dc92dafc8aa8816088108d6175d
\ No newline at end of file
diff --git a/internal-prebuilts/com/android/databinding/adapters/1.0-rc3/adapters-1.0-rc3.pom.sha1 b/internal-prebuilts/com/android/databinding/adapters/1.0-rc3/adapters-1.0-rc3.pom.sha1
new file mode 100644
index 0000000..375c72d
--- /dev/null
+++ b/internal-prebuilts/com/android/databinding/adapters/1.0-rc3/adapters-1.0-rc3.pom.sha1
@@ -0,0 +1 @@
+22547691cf3cc9ca63b6e872a04b111964674193
\ No newline at end of file
diff --git a/internal-prebuilts/com/android/databinding/adapters/1.0-rc5/adapters-1.0-rc5-javadoc.jar b/internal-prebuilts/com/android/databinding/adapters/1.0-rc5/adapters-1.0-rc5-javadoc.jar
new file mode 100644
index 0000000..0a4baeb
--- /dev/null
+++ b/internal-prebuilts/com/android/databinding/adapters/1.0-rc5/adapters-1.0-rc5-javadoc.jar
Binary files differ
diff --git a/internal-prebuilts/com/android/databinding/adapters/1.0-rc5/adapters-1.0-rc5-javadoc.jar.md5 b/internal-prebuilts/com/android/databinding/adapters/1.0-rc5/adapters-1.0-rc5-javadoc.jar.md5
new file mode 100644
index 0000000..c61e62c
--- /dev/null
+++ b/internal-prebuilts/com/android/databinding/adapters/1.0-rc5/adapters-1.0-rc5-javadoc.jar.md5
@@ -0,0 +1 @@
+3653511ec6a902c0cb8cb1c35e83d8bf
\ No newline at end of file
diff --git a/internal-prebuilts/com/android/databinding/adapters/1.0-rc5/adapters-1.0-rc5-javadoc.jar.sha1 b/internal-prebuilts/com/android/databinding/adapters/1.0-rc5/adapters-1.0-rc5-javadoc.jar.sha1
new file mode 100644
index 0000000..5c8cbca
--- /dev/null
+++ b/internal-prebuilts/com/android/databinding/adapters/1.0-rc5/adapters-1.0-rc5-javadoc.jar.sha1
@@ -0,0 +1 @@
+9e4a7cc9ec5c09320c93d52db381a21413a88c7b
\ No newline at end of file
diff --git a/internal-prebuilts/com/android/databinding/adapters/1.0-rc5/adapters-1.0-rc5-sources.jar b/internal-prebuilts/com/android/databinding/adapters/1.0-rc5/adapters-1.0-rc5-sources.jar
new file mode 100644
index 0000000..8fda1f2
--- /dev/null
+++ b/internal-prebuilts/com/android/databinding/adapters/1.0-rc5/adapters-1.0-rc5-sources.jar
Binary files differ
diff --git a/internal-prebuilts/com/android/databinding/adapters/1.0-rc5/adapters-1.0-rc5-sources.jar.md5 b/internal-prebuilts/com/android/databinding/adapters/1.0-rc5/adapters-1.0-rc5-sources.jar.md5
new file mode 100644
index 0000000..9c6cdef
--- /dev/null
+++ b/internal-prebuilts/com/android/databinding/adapters/1.0-rc5/adapters-1.0-rc5-sources.jar.md5
@@ -0,0 +1 @@
+886d28a28d1507215a5b52de8aafe501
\ No newline at end of file
diff --git a/internal-prebuilts/com/android/databinding/adapters/1.0-rc5/adapters-1.0-rc5-sources.jar.sha1 b/internal-prebuilts/com/android/databinding/adapters/1.0-rc5/adapters-1.0-rc5-sources.jar.sha1
new file mode 100644
index 0000000..9595681
--- /dev/null
+++ b/internal-prebuilts/com/android/databinding/adapters/1.0-rc5/adapters-1.0-rc5-sources.jar.sha1
@@ -0,0 +1 @@
+8cddf09f2b4ce33b8acefbc8395a23cd09220608
\ No newline at end of file
diff --git a/internal-prebuilts/com/android/databinding/adapters/1.0-rc5/adapters-1.0-rc5.aar b/internal-prebuilts/com/android/databinding/adapters/1.0-rc5/adapters-1.0-rc5.aar
new file mode 100644
index 0000000..072d0c8
--- /dev/null
+++ b/internal-prebuilts/com/android/databinding/adapters/1.0-rc5/adapters-1.0-rc5.aar
Binary files differ
diff --git a/internal-prebuilts/com/android/databinding/adapters/1.0-rc5/adapters-1.0-rc5.aar.md5 b/internal-prebuilts/com/android/databinding/adapters/1.0-rc5/adapters-1.0-rc5.aar.md5
new file mode 100644
index 0000000..ebe5ac3
--- /dev/null
+++ b/internal-prebuilts/com/android/databinding/adapters/1.0-rc5/adapters-1.0-rc5.aar.md5
@@ -0,0 +1 @@
+15dfee32a3045fb217e8ebd14d840ffb
\ No newline at end of file
diff --git a/internal-prebuilts/com/android/databinding/adapters/1.0-rc5/adapters-1.0-rc5.aar.sha1 b/internal-prebuilts/com/android/databinding/adapters/1.0-rc5/adapters-1.0-rc5.aar.sha1
new file mode 100644
index 0000000..3ef5c33
--- /dev/null
+++ b/internal-prebuilts/com/android/databinding/adapters/1.0-rc5/adapters-1.0-rc5.aar.sha1
@@ -0,0 +1 @@
+01ac2f4916e93f32049bbc564217f51fabed2955
\ No newline at end of file
diff --git a/internal-prebuilts/com/android/databinding/adapters/1.0-rc5/adapters-1.0-rc5.pom b/internal-prebuilts/com/android/databinding/adapters/1.0-rc5/adapters-1.0-rc5.pom
new file mode 100644
index 0000000..f7824b1
--- /dev/null
+++ b/internal-prebuilts/com/android/databinding/adapters/1.0-rc5/adapters-1.0-rc5.pom
@@ -0,0 +1,30 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd" xmlns="http://maven.apache.org/POM/4.0.0"
+    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+  <modelVersion>4.0.0</modelVersion>
+  <groupId>com.android.databinding</groupId>
+  <artifactId>adapters</artifactId>
+  <version>1.0-rc5</version>
+  <packaging>aar</packaging>
+  <licenses>
+    <license>
+      <name>The Apache Software License, Version 2.0</name>
+      <url>http://www.apache.org/licenses/LICENSE-2.0.txt</url>
+      <distribution>repo</distribution>
+    </license>
+  </licenses>
+  <dependencies>
+    <dependency>
+      <groupId>com.android.databinding</groupId>
+      <artifactId>library</artifactId>
+      <version>1.0-rc5</version>
+      <scope>compile</scope>
+    </dependency>
+    <dependency>
+      <groupId>com.android.databinding</groupId>
+      <artifactId>baseLibrary</artifactId>
+      <version>1.0-rc5</version>
+      <scope>compile</scope>
+    </dependency>
+  </dependencies>
+</project>
diff --git a/internal-prebuilts/com/android/databinding/adapters/1.0-rc5/adapters-1.0-rc5.pom.md5 b/internal-prebuilts/com/android/databinding/adapters/1.0-rc5/adapters-1.0-rc5.pom.md5
new file mode 100644
index 0000000..7f5e52e
--- /dev/null
+++ b/internal-prebuilts/com/android/databinding/adapters/1.0-rc5/adapters-1.0-rc5.pom.md5
@@ -0,0 +1 @@
+9550c15097a003ffd03006215e07d17c
\ No newline at end of file
diff --git a/internal-prebuilts/com/android/databinding/adapters/1.0-rc5/adapters-1.0-rc5.pom.sha1 b/internal-prebuilts/com/android/databinding/adapters/1.0-rc5/adapters-1.0-rc5.pom.sha1
new file mode 100644
index 0000000..7c06238
--- /dev/null
+++ b/internal-prebuilts/com/android/databinding/adapters/1.0-rc5/adapters-1.0-rc5.pom.sha1
@@ -0,0 +1 @@
+084728a93397ecc99af002f2c5614b4a64510cfb
\ No newline at end of file
diff --git a/internal-prebuilts/com/android/databinding/adapters/maven-metadata.xml b/internal-prebuilts/com/android/databinding/adapters/maven-metadata.xml
new file mode 100644
index 0000000..2c79618
--- /dev/null
+++ b/internal-prebuilts/com/android/databinding/adapters/maven-metadata.xml
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<metadata>
+  <groupId>com.android.databinding</groupId>
+  <artifactId>adapters</artifactId>
+  <version>1.0-rc5</version>
+  <versioning>
+    <versions>
+      <version>1.0-rc5</version>
+    </versions>
+    <lastUpdated>20151103182653</lastUpdated>
+  </versioning>
+</metadata>
diff --git a/internal-prebuilts/com/android/databinding/adapters/maven-metadata.xml.md5 b/internal-prebuilts/com/android/databinding/adapters/maven-metadata.xml.md5
new file mode 100644
index 0000000..b897c55
--- /dev/null
+++ b/internal-prebuilts/com/android/databinding/adapters/maven-metadata.xml.md5
@@ -0,0 +1 @@
+ed1f2e20823c454ef9fe9de43fcf4a24
\ No newline at end of file
diff --git a/internal-prebuilts/com/android/databinding/adapters/maven-metadata.xml.sha1 b/internal-prebuilts/com/android/databinding/adapters/maven-metadata.xml.sha1
new file mode 100644
index 0000000..5e47de5
--- /dev/null
+++ b/internal-prebuilts/com/android/databinding/adapters/maven-metadata.xml.sha1
@@ -0,0 +1 @@
+c29088e11462587f5e1d25fb2453d89bf55ca8ba
\ No newline at end of file
diff --git a/internal-prebuilts/com/android/databinding/bintray/1.1/bintray-1.1.jar b/internal-prebuilts/com/android/databinding/bintray/1.1/bintray-1.1.jar
deleted file mode 100644
index 235c31d..0000000
--- a/internal-prebuilts/com/android/databinding/bintray/1.1/bintray-1.1.jar
+++ /dev/null
Binary files differ
diff --git a/internal-prebuilts/com/android/databinding/bintray/1.1/bintray-1.1.jar.md5 b/internal-prebuilts/com/android/databinding/bintray/1.1/bintray-1.1.jar.md5
deleted file mode 100644
index 0f51fec..0000000
--- a/internal-prebuilts/com/android/databinding/bintray/1.1/bintray-1.1.jar.md5
+++ /dev/null
@@ -1 +0,0 @@
-8fadb8333aee18c3fa913ddbb83ad497
\ No newline at end of file
diff --git a/internal-prebuilts/com/android/databinding/bintray/1.1/bintray-1.1.jar.sha1 b/internal-prebuilts/com/android/databinding/bintray/1.1/bintray-1.1.jar.sha1
deleted file mode 100644
index 348c62b..0000000
--- a/internal-prebuilts/com/android/databinding/bintray/1.1/bintray-1.1.jar.sha1
+++ /dev/null
@@ -1 +0,0 @@
-2bbb3803d96aaf68f3f966e48401342c310a9c29
\ No newline at end of file
diff --git a/internal-prebuilts/com/android/databinding/bintray/1.1/bintray-1.1.pom b/internal-prebuilts/com/android/databinding/bintray/1.1/bintray-1.1.pom
deleted file mode 100644
index e5bd0a9..0000000
--- a/internal-prebuilts/com/android/databinding/bintray/1.1/bintray-1.1.pom
+++ /dev/null
@@ -1,16 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd" xmlns="http://maven.apache.org/POM/4.0.0"
-    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
-  <modelVersion>4.0.0</modelVersion>
-  <groupId>com.android.databinding</groupId>
-  <artifactId>bintray</artifactId>
-  <version>1.1</version>
-  <dependencies>
-    <dependency>
-      <groupId>junit</groupId>
-      <artifactId>junit</artifactId>
-      <version>4.12</version>
-      <scope>test</scope>
-    </dependency>
-  </dependencies>
-</project>
diff --git a/internal-prebuilts/com/android/databinding/bintray/1.1/bintray-1.1.pom.md5 b/internal-prebuilts/com/android/databinding/bintray/1.1/bintray-1.1.pom.md5
deleted file mode 100644
index f6f0760..0000000
--- a/internal-prebuilts/com/android/databinding/bintray/1.1/bintray-1.1.pom.md5
+++ /dev/null
@@ -1 +0,0 @@
-dc8e11613a91e102b1172e105bdff7cb
\ No newline at end of file
diff --git a/internal-prebuilts/com/android/databinding/bintray/1.1/bintray-1.1.pom.sha1 b/internal-prebuilts/com/android/databinding/bintray/1.1/bintray-1.1.pom.sha1
deleted file mode 100644
index 7be4a27..0000000
--- a/internal-prebuilts/com/android/databinding/bintray/1.1/bintray-1.1.pom.sha1
+++ /dev/null
@@ -1 +0,0 @@
-0ff48117aee0992fbe7b3a956bd8d68eaaf2c515
\ No newline at end of file
diff --git a/internal-prebuilts/com/android/databinding/bintray/maven-metadata.xml b/internal-prebuilts/com/android/databinding/bintray/maven-metadata.xml
deleted file mode 100644
index bc469a0..0000000
--- a/internal-prebuilts/com/android/databinding/bintray/maven-metadata.xml
+++ /dev/null
@@ -1,12 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<metadata>
-  <groupId>com.android.databinding</groupId>
-  <artifactId>bintray</artifactId>
-  <version>1.1</version>
-  <versioning>
-    <versions>
-      <version>1.1</version>
-    </versions>
-    <lastUpdated>20151030181338</lastUpdated>
-  </versioning>
-</metadata>
diff --git a/internal-prebuilts/com/android/databinding/bintray/maven-metadata.xml.md5 b/internal-prebuilts/com/android/databinding/bintray/maven-metadata.xml.md5
deleted file mode 100644
index 838e22a..0000000
--- a/internal-prebuilts/com/android/databinding/bintray/maven-metadata.xml.md5
+++ /dev/null
@@ -1 +0,0 @@
-2df6821262c2d4c1385ef99a8f0dcfa7
\ No newline at end of file
diff --git a/internal-prebuilts/com/android/databinding/bintray/maven-metadata.xml.sha1 b/internal-prebuilts/com/android/databinding/bintray/maven-metadata.xml.sha1
deleted file mode 100644
index 31f44bb..0000000
--- a/internal-prebuilts/com/android/databinding/bintray/maven-metadata.xml.sha1
+++ /dev/null
@@ -1 +0,0 @@
-8bb8aa3b59a8a640773a11832be32a62c407ea45
\ No newline at end of file
diff --git a/internal-prebuilts/com/android/databinding/library/1.0-rc3/library-1.0-rc3-javadoc.jar b/internal-prebuilts/com/android/databinding/library/1.0-rc3/library-1.0-rc3-javadoc.jar
index d0f5a15..8691f34 100644
--- a/internal-prebuilts/com/android/databinding/library/1.0-rc3/library-1.0-rc3-javadoc.jar
+++ b/internal-prebuilts/com/android/databinding/library/1.0-rc3/library-1.0-rc3-javadoc.jar
Binary files differ
diff --git a/internal-prebuilts/com/android/databinding/library/1.0-rc3/library-1.0-rc3-javadoc.jar.md5 b/internal-prebuilts/com/android/databinding/library/1.0-rc3/library-1.0-rc3-javadoc.jar.md5
index ffb8c1e..5570186 100644
--- a/internal-prebuilts/com/android/databinding/library/1.0-rc3/library-1.0-rc3-javadoc.jar.md5
+++ b/internal-prebuilts/com/android/databinding/library/1.0-rc3/library-1.0-rc3-javadoc.jar.md5
@@ -1 +1 @@
-7d27a72c2bf4572aa7cbb16f1fa27f2a
\ No newline at end of file
+7f9c5798e927f862c9e3b297a15ba841
\ No newline at end of file
diff --git a/internal-prebuilts/com/android/databinding/library/1.0-rc3/library-1.0-rc3-javadoc.jar.sha1 b/internal-prebuilts/com/android/databinding/library/1.0-rc3/library-1.0-rc3-javadoc.jar.sha1
index eb98972..222e7f2 100644
--- a/internal-prebuilts/com/android/databinding/library/1.0-rc3/library-1.0-rc3-javadoc.jar.sha1
+++ b/internal-prebuilts/com/android/databinding/library/1.0-rc3/library-1.0-rc3-javadoc.jar.sha1
@@ -1 +1 @@
-87410ab0c2d367b3f60937e68282031015437e65
\ No newline at end of file
+7599391632f87f2b33c0c392b6e1593ef1196221
\ No newline at end of file
diff --git a/internal-prebuilts/com/android/databinding/library/1.0-rc3/library-1.0-rc3-sources.jar b/internal-prebuilts/com/android/databinding/library/1.0-rc3/library-1.0-rc3-sources.jar
index d0f5a15..652ad8d 100644
--- a/internal-prebuilts/com/android/databinding/library/1.0-rc3/library-1.0-rc3-sources.jar
+++ b/internal-prebuilts/com/android/databinding/library/1.0-rc3/library-1.0-rc3-sources.jar
Binary files differ
diff --git a/internal-prebuilts/com/android/databinding/library/1.0-rc3/library-1.0-rc3-sources.jar.md5 b/internal-prebuilts/com/android/databinding/library/1.0-rc3/library-1.0-rc3-sources.jar.md5
index ffb8c1e..f6b98ed 100644
--- a/internal-prebuilts/com/android/databinding/library/1.0-rc3/library-1.0-rc3-sources.jar.md5
+++ b/internal-prebuilts/com/android/databinding/library/1.0-rc3/library-1.0-rc3-sources.jar.md5
@@ -1 +1 @@
-7d27a72c2bf4572aa7cbb16f1fa27f2a
\ No newline at end of file
+7ed58210198f3afb13226a42f3d97b80
\ No newline at end of file
diff --git a/internal-prebuilts/com/android/databinding/library/1.0-rc3/library-1.0-rc3-sources.jar.sha1 b/internal-prebuilts/com/android/databinding/library/1.0-rc3/library-1.0-rc3-sources.jar.sha1
index eb98972..06663fb 100644
--- a/internal-prebuilts/com/android/databinding/library/1.0-rc3/library-1.0-rc3-sources.jar.sha1
+++ b/internal-prebuilts/com/android/databinding/library/1.0-rc3/library-1.0-rc3-sources.jar.sha1
@@ -1 +1 @@
-87410ab0c2d367b3f60937e68282031015437e65
\ No newline at end of file
+a25430b7adff8cd8f6eb5d4ba1066fbe92099b81
\ No newline at end of file
diff --git a/internal-prebuilts/com/android/databinding/library/1.0-rc3/library-1.0-rc3.aar b/internal-prebuilts/com/android/databinding/library/1.0-rc3/library-1.0-rc3.aar
index 32d2ca6..439fce5 100644
--- a/internal-prebuilts/com/android/databinding/library/1.0-rc3/library-1.0-rc3.aar
+++ b/internal-prebuilts/com/android/databinding/library/1.0-rc3/library-1.0-rc3.aar
Binary files differ
diff --git a/internal-prebuilts/com/android/databinding/library/1.0-rc3/library-1.0-rc3.aar.md5 b/internal-prebuilts/com/android/databinding/library/1.0-rc3/library-1.0-rc3.aar.md5
index 1c3fb0b..d454d0f 100644
--- a/internal-prebuilts/com/android/databinding/library/1.0-rc3/library-1.0-rc3.aar.md5
+++ b/internal-prebuilts/com/android/databinding/library/1.0-rc3/library-1.0-rc3.aar.md5
@@ -1 +1 @@
-a37f1e84070d11251a7724e2d8d8c5a2
\ No newline at end of file
+3ca01d790d7efee212362a168a74b6c7
\ No newline at end of file
diff --git a/internal-prebuilts/com/android/databinding/library/1.0-rc3/library-1.0-rc3.aar.sha1 b/internal-prebuilts/com/android/databinding/library/1.0-rc3/library-1.0-rc3.aar.sha1
index 2066a0a..af0648b 100644
--- a/internal-prebuilts/com/android/databinding/library/1.0-rc3/library-1.0-rc3.aar.sha1
+++ b/internal-prebuilts/com/android/databinding/library/1.0-rc3/library-1.0-rc3.aar.sha1
@@ -1 +1 @@
-115c443258c5a58e39f26a48134cf2dd0286733c
\ No newline at end of file
+33a2cacd38ea6e7ea750a50b1be3e5ecddc07fd2
\ No newline at end of file
diff --git a/internal-prebuilts/com/android/databinding/library/1.0-rc3/library-1.0-rc3.pom b/internal-prebuilts/com/android/databinding/library/1.0-rc3/library-1.0-rc3.pom
index 6a04718..d836832 100644
--- a/internal-prebuilts/com/android/databinding/library/1.0-rc3/library-1.0-rc3.pom
+++ b/internal-prebuilts/com/android/databinding/library/1.0-rc3/library-1.0-rc3.pom
@@ -15,15 +15,15 @@
   </licenses>
   <dependencies>
     <dependency>
-      <groupId>com.android.support</groupId>
-      <artifactId>support-v4</artifactId>
-      <version>21.0.3</version>
+      <groupId>com.android.databinding</groupId>
+      <artifactId>baseLibrary</artifactId>
+      <version>1.0-rc3</version>
       <scope>compile</scope>
     </dependency>
     <dependency>
-      <groupId>com.android.databinding</groupId>
-      <artifactId>baseLibrary</artifactId>
-      <version>1.0-rc5</version>
+      <groupId>com.android.support</groupId>
+      <artifactId>support-v4</artifactId>
+      <version>21.0.3</version>
       <scope>compile</scope>
     </dependency>
   </dependencies>
diff --git a/internal-prebuilts/com/android/databinding/library/1.0-rc3/library-1.0-rc3.pom.md5 b/internal-prebuilts/com/android/databinding/library/1.0-rc3/library-1.0-rc3.pom.md5
index 5106fc5..f5d608b 100644
--- a/internal-prebuilts/com/android/databinding/library/1.0-rc3/library-1.0-rc3.pom.md5
+++ b/internal-prebuilts/com/android/databinding/library/1.0-rc3/library-1.0-rc3.pom.md5
@@ -1 +1 @@
-c43aa2a1326935ac1912c3e55727b7f7
\ No newline at end of file
+ef14709e30f81059e4e466e3cbda2c05
\ No newline at end of file
diff --git a/internal-prebuilts/com/android/databinding/library/1.0-rc3/library-1.0-rc3.pom.sha1 b/internal-prebuilts/com/android/databinding/library/1.0-rc3/library-1.0-rc3.pom.sha1
index 15c7d3f..c97a628 100644
--- a/internal-prebuilts/com/android/databinding/library/1.0-rc3/library-1.0-rc3.pom.sha1
+++ b/internal-prebuilts/com/android/databinding/library/1.0-rc3/library-1.0-rc3.pom.sha1
@@ -1 +1 @@
-f5a74dac492db06fe8139ba8eb5d790c0900237b
\ No newline at end of file
+e7aea023ae8188c8130bdf68e39a3a0fe3b392b1
\ No newline at end of file
diff --git a/internal-prebuilts/com/android/databinding/library/1.0-rc5/library-1.0-rc5-javadoc.jar b/internal-prebuilts/com/android/databinding/library/1.0-rc5/library-1.0-rc5-javadoc.jar
new file mode 100644
index 0000000..2496be0
--- /dev/null
+++ b/internal-prebuilts/com/android/databinding/library/1.0-rc5/library-1.0-rc5-javadoc.jar
Binary files differ
diff --git a/internal-prebuilts/com/android/databinding/library/1.0-rc5/library-1.0-rc5-javadoc.jar.md5 b/internal-prebuilts/com/android/databinding/library/1.0-rc5/library-1.0-rc5-javadoc.jar.md5
new file mode 100644
index 0000000..029c0b1
--- /dev/null
+++ b/internal-prebuilts/com/android/databinding/library/1.0-rc5/library-1.0-rc5-javadoc.jar.md5
@@ -0,0 +1 @@
+55b0c81b3729025054081437f34155ec
\ No newline at end of file
diff --git a/internal-prebuilts/com/android/databinding/library/1.0-rc5/library-1.0-rc5-javadoc.jar.sha1 b/internal-prebuilts/com/android/databinding/library/1.0-rc5/library-1.0-rc5-javadoc.jar.sha1
new file mode 100644
index 0000000..b6ac5a8
--- /dev/null
+++ b/internal-prebuilts/com/android/databinding/library/1.0-rc5/library-1.0-rc5-javadoc.jar.sha1
@@ -0,0 +1 @@
+34c8d79bd66d99f81666593c35ae7cdb036b1a03
\ No newline at end of file
diff --git a/internal-prebuilts/com/android/databinding/library/1.0-rc5/library-1.0-rc5-sources.jar b/internal-prebuilts/com/android/databinding/library/1.0-rc5/library-1.0-rc5-sources.jar
new file mode 100644
index 0000000..b83ae6f
--- /dev/null
+++ b/internal-prebuilts/com/android/databinding/library/1.0-rc5/library-1.0-rc5-sources.jar
Binary files differ
diff --git a/internal-prebuilts/com/android/databinding/library/1.0-rc5/library-1.0-rc5-sources.jar.md5 b/internal-prebuilts/com/android/databinding/library/1.0-rc5/library-1.0-rc5-sources.jar.md5
new file mode 100644
index 0000000..9cb4087
--- /dev/null
+++ b/internal-prebuilts/com/android/databinding/library/1.0-rc5/library-1.0-rc5-sources.jar.md5
@@ -0,0 +1 @@
+0f225a5c73a58cf525994b1a183e75ad
\ No newline at end of file
diff --git a/internal-prebuilts/com/android/databinding/library/1.0-rc5/library-1.0-rc5-sources.jar.sha1 b/internal-prebuilts/com/android/databinding/library/1.0-rc5/library-1.0-rc5-sources.jar.sha1
new file mode 100644
index 0000000..436c4c7
--- /dev/null
+++ b/internal-prebuilts/com/android/databinding/library/1.0-rc5/library-1.0-rc5-sources.jar.sha1
@@ -0,0 +1 @@
+b0e6dfbe9daf46fe0503957b81da6e888fdfcf30
\ No newline at end of file
diff --git a/internal-prebuilts/com/android/databinding/library/1.0-rc5/library-1.0-rc5.aar b/internal-prebuilts/com/android/databinding/library/1.0-rc5/library-1.0-rc5.aar
new file mode 100644
index 0000000..1bc5ca8
--- /dev/null
+++ b/internal-prebuilts/com/android/databinding/library/1.0-rc5/library-1.0-rc5.aar
Binary files differ
diff --git a/internal-prebuilts/com/android/databinding/library/1.0-rc5/library-1.0-rc5.aar.md5 b/internal-prebuilts/com/android/databinding/library/1.0-rc5/library-1.0-rc5.aar.md5
new file mode 100644
index 0000000..7db41ee
--- /dev/null
+++ b/internal-prebuilts/com/android/databinding/library/1.0-rc5/library-1.0-rc5.aar.md5
@@ -0,0 +1 @@
+a2166f6f9663d36ee0414f85f229f765
\ No newline at end of file
diff --git a/internal-prebuilts/com/android/databinding/library/1.0-rc5/library-1.0-rc5.aar.sha1 b/internal-prebuilts/com/android/databinding/library/1.0-rc5/library-1.0-rc5.aar.sha1
new file mode 100644
index 0000000..4aced33
--- /dev/null
+++ b/internal-prebuilts/com/android/databinding/library/1.0-rc5/library-1.0-rc5.aar.sha1
@@ -0,0 +1 @@
+aba6c5f9ad349a476c59826b53c1a2deb1af3add
\ No newline at end of file
diff --git a/internal-prebuilts/com/android/databinding/library/1.0-rc5/library-1.0-rc5.pom b/internal-prebuilts/com/android/databinding/library/1.0-rc5/library-1.0-rc5.pom
new file mode 100644
index 0000000..c2e5066
--- /dev/null
+++ b/internal-prebuilts/com/android/databinding/library/1.0-rc5/library-1.0-rc5.pom
@@ -0,0 +1,30 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd" xmlns="http://maven.apache.org/POM/4.0.0"
+    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+  <modelVersion>4.0.0</modelVersion>
+  <groupId>com.android.databinding</groupId>
+  <artifactId>library</artifactId>
+  <version>1.0-rc5</version>
+  <packaging>aar</packaging>
+  <licenses>
+    <license>
+      <name>The Apache Software License, Version 2.0</name>
+      <url>http://www.apache.org/licenses/LICENSE-2.0.txt</url>
+      <distribution>repo</distribution>
+    </license>
+  </licenses>
+  <dependencies>
+    <dependency>
+      <groupId>com.android.support</groupId>
+      <artifactId>support-v4</artifactId>
+      <version>21.0.3</version>
+      <scope>compile</scope>
+    </dependency>
+    <dependency>
+      <groupId>com.android.databinding</groupId>
+      <artifactId>baseLibrary</artifactId>
+      <version>1.0-rc5</version>
+      <scope>compile</scope>
+    </dependency>
+  </dependencies>
+</project>
diff --git a/internal-prebuilts/com/android/databinding/library/1.0-rc5/library-1.0-rc5.pom.md5 b/internal-prebuilts/com/android/databinding/library/1.0-rc5/library-1.0-rc5.pom.md5
new file mode 100644
index 0000000..67798ba
--- /dev/null
+++ b/internal-prebuilts/com/android/databinding/library/1.0-rc5/library-1.0-rc5.pom.md5
@@ -0,0 +1 @@
+f2a81f3066450c88c406125052d0b4b7
\ No newline at end of file
diff --git a/internal-prebuilts/com/android/databinding/library/1.0-rc5/library-1.0-rc5.pom.sha1 b/internal-prebuilts/com/android/databinding/library/1.0-rc5/library-1.0-rc5.pom.sha1
new file mode 100644
index 0000000..fdd031f
--- /dev/null
+++ b/internal-prebuilts/com/android/databinding/library/1.0-rc5/library-1.0-rc5.pom.sha1
@@ -0,0 +1 @@
+328129fafbd49107574154efdefd115efe26c60b
\ No newline at end of file
diff --git a/internal-prebuilts/com/android/databinding/library/maven-metadata.xml b/internal-prebuilts/com/android/databinding/library/maven-metadata.xml
new file mode 100644
index 0000000..fe76ad4
--- /dev/null
+++ b/internal-prebuilts/com/android/databinding/library/maven-metadata.xml
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<metadata>
+  <groupId>com.android.databinding</groupId>
+  <artifactId>library</artifactId>
+  <version>1.0-rc5</version>
+  <versioning>
+    <versions>
+      <version>1.0-rc5</version>
+    </versions>
+    <lastUpdated>20151103182638</lastUpdated>
+  </versioning>
+</metadata>
diff --git a/internal-prebuilts/com/android/databinding/library/maven-metadata.xml.md5 b/internal-prebuilts/com/android/databinding/library/maven-metadata.xml.md5
new file mode 100644
index 0000000..4078a0f
--- /dev/null
+++ b/internal-prebuilts/com/android/databinding/library/maven-metadata.xml.md5
@@ -0,0 +1 @@
+b8fbccd46940a63f9000d9f1c1bf25b9
\ No newline at end of file
diff --git a/internal-prebuilts/com/android/databinding/library/maven-metadata.xml.sha1 b/internal-prebuilts/com/android/databinding/library/maven-metadata.xml.sha1
new file mode 100644
index 0000000..3246e89
--- /dev/null
+++ b/internal-prebuilts/com/android/databinding/library/maven-metadata.xml.sha1
@@ -0,0 +1 @@
+ba7f5d2258c7a5e6790cc72ec9f77efd86d8f5a1
\ No newline at end of file
diff --git a/propLoader.gradle b/propLoader.gradle
index f8f0ae6..2edd45a 100644
--- a/propLoader.gradle
+++ b/propLoader.gradle
@@ -15,10 +15,11 @@
 databindingProperties.internalPrebuiltsRepoDir = "${root}/${databindingProperties.internalPrebuiltsRepoName}"
 databindingProperties.runProguard = project.hasProperty('runProguard') && project.getProperty('runProguard').equals("true")
 
+databindingProperties.inReleaseBuild = project.ext.hasProperty('release') && project.ext.release
 // load version from gradle build file
 apply from: "$root/../buildSrc/base/version.gradle"
 databindingProperties.androidPluginVersion=ext.buildVersion
-
+databindingProperties.isIndependent = rootProject.name.equals("data-binding")
 databindingProperties.eapOutDir = "${root}/${databindingProperties.eapOutFolderName}"
 databindingProperties.prebuildFolder = "${root}/${databindingProperties.prebuildFolderName}" +
         "/${databindingProperties.releaseVersion}"
@@ -27,17 +28,12 @@
 ext.dataBindingConfig.externalPrebuiltsBase = "${root}/../../prebuilts"
 databindingProperties.megaRepoDir = "${databindingProperties.externalPrebuiltsBase}/tools/common/m2/repository"
 
-println "local maven repo is ${ext.dataBindingConfig.mavenRepoDir}."
-println "local pre-build folder is ${ext.dataBindingConfig.prebuildFolder}."
-println "mega-repo folder is ${ext.dataBindingConfig.megaRepoDir}."
-
 new File(ext.dataBindingConfig.mavenRepoDir).mkdir()
 new File(ext.dataBindingConfig.prebuildFolder).mkdir()
 
 def addRemoteRepos = project.hasProperty('addRemoteRepos') && project.getProperty('addRemoteRepos').equals("true")
 ext.dataBindingConfig.addRemoteRepos = addRemoteRepos
 ext.dataBindingConfig.sharedSupportRepoDir = "${ext.dataBindingConfig.externalPrebuiltsBase}/maven_repo/android"
-ext.dataBindingConfig.inReleaseBuild = !databindingProperties.version.endsWith("SNAPSHOT")
 ext.dataBindingConfig.forGradlePlugin = project.hasProperty('forGradlePlugin') && project.getProperty('forGradlePlugin').equals("true")
 def dataBindingConfig = ext.dataBindingConfig
 def localRepositories = ["${dataBindingConfig.internalPrebuiltsRepoDir}",
@@ -70,3 +66,13 @@
     }
 }
 
+def enablePublishing(p, addJavadoc) {
+    if (!ext.dataBindingConfig.isIndependent) {
+        p.apply from: "$dataBindingRootFolder/../buildSrc/base/publish.gradle"
+        p.apply from: "$dataBindingRootFolder/../buildSrc/base/bintray.gradle"
+        if (addJavadoc) {
+            p.apply from: "$dataBindingRootFolder/../buildSrc/base/javadoc.gradle"
+        }
+    }
+}
+ext.enablePublishing = this.&enablePublishing
\ No newline at end of file
diff --git a/supportBundle.gradle b/supportBundle.gradle
index 44d18f2..94e20ad 100644
--- a/supportBundle.gradle
+++ b/supportBundle.gradle
@@ -35,13 +35,16 @@
     project.ext.distDir = file('../../out/dist')
 }
 project.ext.distDir.mkdirs()
-
 ext.supportRepoOut = new File(buildDir, 'support_repo')
 
 // Main task called by the build server.
 task(createArchive) << {
 }
+createArchive.doLast {
+    println "support repo out ${project.ext.supportRepoOut}"
+    println "dist dir ${project.ext.distDir}"
 
+}
 
 // upload anchor for subprojects to upload their artifacts
 // to the local repo.
@@ -56,10 +59,9 @@
     baseName = String.format("sdk-repo-linux-m2repository-%s", project.ext.buildNumber)
 }
 createArchive.dependsOn createRepository
-
 // prepare repository with older versions
 task unzipRepo(type: Copy) {
-    from "$rootDir/../../prebuilts/maven_repo/android"
+    from "${dataBindingConfig.externalPrebuiltsBase}/maven_repo/android"
     into project.ext.supportRepoOut
 }
 
@@ -111,7 +113,6 @@
 Archive.Os=ANY\n\
 Pkg.Revision=${project.ext.extraVersion}.0.0\n\
 Extra.VendorId=android"
-
     Files.write(sourceProp, new File(project.ext.supportRepoOut, 'source.properties'), Charsets.UTF_8)
 }
 createSourceProp.dependsOn unzipRepo
@@ -129,4 +130,4 @@
 }
 createRepository.dependsOn prepareRepo
 createRepository.dependsOn unzipRepo
-unzipRepo.dependsOn bundleSupportLib
+createRepository.dependsOn bundleSupportLib
