diff --git a/build.gradle b/build.gradle
index 1bcae5bde..20490d178 100755
--- a/build.gradle
+++ b/build.gradle
@@ -1,5 +1,6 @@
 plugins {
-    id 'nebula.netflixoss' version '2.2.7'
+    id 'nebula.netflixoss' version '2.2.10'
+    id 'nebula.provided-base' version '2.0.1'
 }
 
 // Establish version and status
@@ -7,6 +8,7 @@ ext.githubProjectName = rootProject.name // Change if github project name is not
 
 subprojects {
     apply plugin: 'nebula.netflixoss'
+    apply plugin: 'nebula.provided-base'
     apply plugin: 'java'
 
     sourceCompatibility = 1.6
diff --git a/gradle/buildscript.gradle b/gradle/buildscript.gradle
deleted file mode 100644
index 0b6da7ce8..000000000
--- a/gradle/buildscript.gradle
+++ /dev/null
@@ -1,11 +0,0 @@
-// Executed in context of buildscript
-repositories {
-    // Repo in addition to maven central
-    repositories { maven { url 'http://dl.bintray.com/content/netflixoss/external-gradle-plugins/' } } // For gradle-release
-}
-dependencies {
-    classpath 'nl.javadude.gradle.plugins:license-gradle-plugin:0.6.1'
-    classpath 'com.mapvine:gradle-cobertura-plugin:0.1'
-    classpath 'gradle-release:gradle-release:1.1.5'
-    classpath 'org.ajoberstar:gradle-git:0.5.0'
-}
diff --git a/gradle/check.gradle b/gradle/check.gradle
deleted file mode 100644
index a3e4b4e7f..000000000
--- a/gradle/check.gradle
+++ /dev/null
@@ -1,26 +0,0 @@
-subprojects {
-// Checkstyle
-apply plugin: 'checkstyle'
-checkstyle {
-    ignoreFailures = true 
-    configFile = rootProject.file('codequality/checkstyle.xml')
-}
-
-// FindBugs
-apply plugin: 'findbugs'
-findbugs {
-    ignoreFailures = true
-}
-
-// PMD
-apply plugin: 'pmd'
-//tasks.withType(Pmd) { reports.html.enabled true }
-
-apply plugin: 'cobertura'
-cobertura {
-    sourceDirs = sourceSets.main.java.srcDirs
-    format = 'html'
-    includes = ['**/*.java', '**/*.groovy']
-    excludes = []
-}
-}
diff --git a/gradle/convention.gradle b/gradle/convention.gradle
deleted file mode 100644
index c4658fc33..000000000
--- a/gradle/convention.gradle
+++ /dev/null
@@ -1,101 +0,0 @@
-// GRADLE-2087 workaround, perform after java plugin
-status = project.hasProperty('preferredStatus')?project.preferredStatus:(version.contains('SNAPSHOT')?'snapshot':'release')
-
-subprojects { project ->
-    apply plugin: 'java' // Plugin as major conventions
-
-    sourceCompatibility = 1.6
-
-    // Restore status after Java plugin
-    status = rootProject.status
-
-    task sourcesJar(type: Jar, dependsOn:classes) {
-        from sourceSets.main.allSource
-        classifier 'sources'
-        extension 'jar'
-    }
-
-    task javadocJar(type: Jar, dependsOn:javadoc) {
-        from javadoc.destinationDir
-        classifier 'javadoc'
-        extension 'jar'
-    }
-
-    configurations.add('sources')
-    configurations.add('javadoc')
-    configurations.archives {
-        extendsFrom configurations.sources
-        extendsFrom configurations.javadoc
-    }
-
-    // When outputing to an Ivy repo, we want to use the proper type field
-    gradle.taskGraph.whenReady {
-        def isNotMaven = !it.hasTask(project.uploadMavenCentral)
-        if (isNotMaven) {
-            def artifacts = project.configurations.sources.artifacts
-            def sourceArtifact = artifacts.iterator().next()
-            sourceArtifact.type = 'sources'
-        }
-    }
-
-    artifacts {
-        sources(sourcesJar) {
-            // Weird Gradle quirk where type will be used for the extension, but only for sources
-            type 'jar'
-        }
-        javadoc(javadocJar) {
-            type 'javadoc'
-        }
-    }
-
-    configurations {
-        provided {
-            description = 'much like compile, but indicates you expect the JDK or a container to provide it. It is only available on the compilation classpath, and is not transitive.'
-            transitive = true
-            visible = true
-        }
-    }
-
-    project.sourceSets {
-        main.compileClasspath += project.configurations.provided
-        main.runtimeClasspath -= project.configurations.provided
-        test.compileClasspath += project.configurations.provided
-        test.runtimeClasspath += project.configurations.provided
-    }
-}
-
-apply plugin: 'github-pages' // Used to create publishGhPages task
-
-def docTasks = [:]
-[Javadoc,ScalaDoc,Groovydoc].each{ Class docClass ->
-    def allSources = allprojects.tasks*.withType(docClass).flatten()*.source 
-    if (allSources) {
-        def shortName = docClass.simpleName.toLowerCase()
-        def docTask = task "aggregate${shortName.capitalize()}"(type: docClass, description: "Aggregate subproject ${shortName}s") {
-            source = allSources
-            destinationDir = file("${project.buildDir}/docs/${shortName}")
-            doFirst {
-                def classpaths = allprojects.findAll { it.plugins.hasPlugin(JavaPlugin) }.collect { it.sourceSets.main.compileClasspath }
-                classpath = files(classpaths)
-            }
-        }
-        docTasks[shortName] = docTask
-        processGhPages.dependsOn(docTask)
-    }
-}
-
-githubPages {
-    repoUri = "git@github.com:Netflix/${rootProject.githubProjectName}.git"
-    pages {
-        docTasks.each { shortName, docTask ->
-            from(docTask.outputs.files) {
-                into "docs/${shortName}"
-            }
-        }
-    }
-}
-
-// Generate wrapper, which is distributed as part of source to alleviate the need of installing gradle
-task createWrapper(type: Wrapper) {
-    gradleVersion = '1.5'
-}
diff --git a/gradle/license.gradle b/gradle/license.gradle
deleted file mode 100644
index abd2e2c0e..000000000
--- a/gradle/license.gradle
+++ /dev/null
@@ -1,10 +0,0 @@
-// Dependency for plugin was set in buildscript.gradle
-
-subprojects {
-apply plugin: 'license' //nl.javadude.gradle.plugins.license.LicensePlugin
-license {
-    header rootProject.file('codequality/HEADER')
-    ext.year = Calendar.getInstance().get(Calendar.YEAR)
-    skipExistingHeaders true
-}
-}
diff --git a/gradle/maven.gradle b/gradle/maven.gradle
deleted file mode 100644
index 817846d77..000000000
--- a/gradle/maven.gradle
+++ /dev/null
@@ -1,70 +0,0 @@
-// Maven side of things
-subprojects {
-    apply plugin: 'maven' // Java plugin has to have been already applied for the conf2scope mappings to work
-    apply plugin: 'signing'
-
-    signing {
-        required { gradle.taskGraph.hasTask(uploadMavenCentral) }
-        sign configurations.archives
-    }
-
-/**
- * Publishing to Maven Central example provided from http://jedicoder.blogspot.com/2011/11/automated-gradle-project-deployment-to.html
- * artifactory will execute uploadArchives to force generation of ivy.xml, and we don't want that to trigger an upload to maven
- * central, so using custom upload task.
- */
-task uploadMavenCentral(type:Upload, dependsOn: signArchives) {
-    configuration = configurations.archives
-    onlyIf { ['release', 'snapshot'].contains(project.status) }
-        repositories.mavenDeployer {
-            beforeDeployment { signing.signPom(it) }
-
-                // To test deployment locally, use the following instead of oss.sonatype.org
-                //repository(url: "file://localhost/${rootProject.rootDir}/repo")
-
-            def sonatypeUsername = rootProject.hasProperty('sonatypeUsername')?rootProject.sonatypeUsername:''
-            def sonatypePassword = rootProject.hasProperty('sonatypePassword')?rootProject.sonatypePassword:''
-
-                repository(url: 'https://oss.sonatype.org/service/local/staging/deploy/maven2') {
-                    authentication(userName: sonatypeUsername, password: sonatypePassword)
-                }
-
-                snapshotRepository(url: 'https://oss.sonatype.org/content/repositories/snapshots/') {
-                    authentication(userName: sonatypeUsername, password: sonatypePassword)
-                }
-
-                // Prevent datastamp from being appending to artifacts during deployment
-                uniqueVersion = false
-
-                // Closure to configure all the POM with extra info, common to all projects
-                pom.project {
-                    name "${project.name}"
-                    description "${project.name} developed by Netflix"
-                    developers {
-                        developer {
-                            id 'netflixgithub'
-                            name 'Netflix Open Source Development'
-                            email 'talent@netflix.com'
-                        }
-                    }
-                    licenses {
-                        license {
-                            name 'The Apache Software License, Version 2.0'
-                            url 'http://www.apache.org/licenses/LICENSE-2.0.txt'
-                            distribution 'repo'
-                        }
-                    }
-                    url "https://github.com/Netflix/${rootProject.githubProjectName}"
-                    scm {
-                        connection "scm:git:git@github.com:Netflix/${rootProject.githubProjectName}.git"
-                        url "scm:git:git@github.com:Netflix/${rootProject.githubProjectName}.git"
-                        developerConnection "scm:git:git@github.com:Netflix/${rootProject.githubProjectName}.git"
-                    }
-                    issueManagement {
-                        system 'github'
-                        url "https://github.com/Netflix/${rootProject.githubProjectName}/issues"
-                    }
-                }
-            }
-        }
-}
diff --git a/gradle/netflix-oss.gradle b/gradle/netflix-oss.gradle
deleted file mode 100644
index a87bc54ef..000000000
--- a/gradle/netflix-oss.gradle
+++ /dev/null
@@ -1 +0,0 @@
-apply from: 'http://artifacts.netflix.com/gradle-netflix-local/artifactory.gradle'
diff --git a/gradle/release.gradle b/gradle/release.gradle
deleted file mode 100644
index 7979dc3a1..000000000
--- a/gradle/release.gradle
+++ /dev/null
@@ -1,61 +0,0 @@
-apply plugin: 'release'
-
-[ uploadIvyLocal: 'uploadLocal', uploadArtifactory: 'artifactoryPublish', buildWithArtifactory: 'build' ].each { key, value ->
-    // Call out to compile against internal repository
-    task "${key}"(type: GradleBuild) {
-        startParameter = project.gradle.startParameter.newInstance()
-        doFirst {
-            startParameter.projectProperties = [status: project.status, preferredStatus: project.status]
-        }
-        startParameter.addInitScript( file('gradle/netflix-oss.gradle') )
-        startParameter.getExcludedTaskNames().add('check')
-        tasks = [ 'build', value ]
-    }
-}
-
-// Marker task for following code to key in on
-task releaseCandidate(dependsOn: release)
-task forceCandidate {
-    onlyIf { gradle.taskGraph.hasTask(releaseCandidate) }
-    doFirst { project.status = 'candidate' }
-}
-task forceRelease {
-    onlyIf { !gradle.taskGraph.hasTask(releaseCandidate) }
-    doFirst { project.status = 'release' }
-}
-release.dependsOn([forceCandidate, forceRelease])
-
-task uploadMavenCentral(dependsOn: subprojects.tasks.uploadMavenCentral)
-task releaseSnapshot(dependsOn: [uploadArtifactory, uploadMavenCentral])
-
-// Ensure our versions look like the project status before publishing
-task verifyStatus << {
-    def hasSnapshot = version.contains('-SNAPSHOT')
-    if (project.status == 'snapshot' && !hasSnapshot) {
-        throw new GradleException("Version (${version}) needs -SNAPSHOT if publishing snapshot")
-    }
-}
-uploadArtifactory.dependsOn(verifyStatus)
-uploadMavenCentral.dependsOn(verifyStatus)
-
-// Ensure upload happens before taggging, hence upload failures will leave repo in a revertable state
-preTagCommit.dependsOn([uploadArtifactory, uploadMavenCentral])
-
-
-gradle.taskGraph.whenReady { taskGraph ->
-    def hasRelease = taskGraph.hasTask('commitNewVersion')
-    def indexOf = { return taskGraph.allTasks.indexOf(it) }
-
-    if (hasRelease) {
-        assert indexOf(build) < indexOf(unSnapshotVersion), 'build target has to be after unSnapshotVersion'
-        assert indexOf(uploadMavenCentral) < indexOf(preTagCommit), 'preTagCommit has to be after uploadMavenCentral'
-        assert indexOf(uploadArtifactory) < indexOf(preTagCommit), 'preTagCommit has to be after uploadArtifactory'
-    }
-}
-
-// Prevent plugin from asking for a version number interactively
-ext.'gradle.release.useAutomaticVersion' = "true"
-
-release {
-    git.requireBranch = null
-}