diff --git a/tools/build/buck-plugin/BUCK b/tools/build/buck-plugin/BUCK
index 37f1e8e..57959a4 100644
--- a/tools/build/buck-plugin/BUCK
+++ b/tools/build/buck-plugin/BUCK
@@ -2,8 +2,8 @@
 remote_jar (
   name = 'buck-api',
   out = 'buck.jar',
-  url = 'https://github.com/bocon13/buck/releases/download/v2016.09.13.01/buck.jar',
-  sha1 = 'd5415b4326e5316675532a8cd48001a8456e8c9e',
+  url = 'https://oss.sonatype.org/content/repositories/snapshots/org/onosproject/buck-api/0.1-SNAPSHOT/buck-api-0.1-20161012.212306-4.jar',
+  sha1 = 'c9cca7ae74ad77dbcbd8e58fc2c6f8ed2b435305',
   visibility = [],
 )
 
diff --git a/tools/build/buck-plugin/src/main/java/org/onosproject/onosjar/OnosJar.java b/tools/build/buck-plugin/src/main/java/org/onosproject/onosjar/OnosJar.java
index 3c71968..dde1902 100644
--- a/tools/build/buck-plugin/src/main/java/org/onosproject/onosjar/OnosJar.java
+++ b/tools/build/buck-plugin/src/main/java/org/onosproject/onosjar/OnosJar.java
@@ -74,6 +74,7 @@
                    ImmutableSet<Path> additionalClasspathEntries,
                    CompileToJarStepFactory compileStepFactory,
                    Optional<Path> resourcesRoot,
+                   Optional<SourcePath> manifestFile,
                    Optional<String> mavenCoords,
                    ImmutableSortedSet<BuildTarget> tests,
                    ImmutableSet<Pattern> classesToRemoveFromJar,
@@ -85,8 +86,8 @@
         super(params, resolver, srcs, resources, generatedSourceFolder,
               proguardConfig, postprocessClassesCommands, exportedDeps,
               providedDeps, abiJar, trackClassUsage, additionalClasspathEntries,
-              compileStepFactory, resourcesRoot, mavenCoords, tests,
-              classesToRemoveFromJar);
+              compileStepFactory, resourcesRoot, manifestFile, mavenCoords,
+              tests, classesToRemoveFromJar);
         this.webContext = webContext;
         this.apiTitle = apiTitle;
         this.apiVersion = apiVersion;
@@ -120,4 +121,10 @@
         //FIXME this is not supported at the moment
         return ImmutableList.of();
     }
+
+    @Override
+    public Optional<Path> getPomTemplate() {
+        //FIXME we should consider supporting this
+        return Optional.absent();
+    }
 }
diff --git a/tools/build/buck-plugin/src/main/java/org/onosproject/onosjar/OnosJarDescription.java b/tools/build/buck-plugin/src/main/java/org/onosproject/onosjar/OnosJarDescription.java
index 83e68f8..6d1ee7e 100644
--- a/tools/build/buck-plugin/src/main/java/org/onosproject/onosjar/OnosJarDescription.java
+++ b/tools/build/buck-plugin/src/main/java/org/onosproject/onosjar/OnosJarDescription.java
@@ -138,7 +138,8 @@
                         Preconditions.checkNotNull(paramsWithMavenFlavor),
                         pathResolver,
                         args.srcs.get(),
-                        args.mavenCoords);
+                        args.mavenCoords,
+                        Optional.absent()); //FIXME
             }
         }
 
@@ -180,7 +181,8 @@
                         args.srcs.get(),
                         javadocFiles.build(),
                         javadocArgs.build(),
-                        args.mavenCoords);
+                        args.mavenCoords,
+                        Optional.absent()); //FIXME
             }
         }
 
@@ -232,6 +234,7 @@
                                                            args.bundleLicense, args.bundleDescription, args.importPackages,
                                                            args.exportPackages, args.includeResources, args.dynamicimportPackages),
                                     args.resourcesRoot,
+                                    args.manifestFile,
                                     args.mavenCoords,
                                     args.tests.get(),
                                     javacOptions.getClassesToRemoveFromJar(),
@@ -270,6 +273,7 @@
                                     /* additionalClasspathEntries */ ImmutableSet.<Path>of(),
                                     new JavacToJarStepFactory(javacOptions, JavacOptionsAmender.IDENTITY),
                                     args.resourcesRoot,
+                                    args.manifestFile,
                                     args.mavenCoords,
                                     args.tests.get(),
                                     javacOptions.getClassesToRemoveFromJar()));
