diff --git a/BUCK b/BUCK
index 329fc6d..16bf880 100644
--- a/BUCK
+++ b/BUCK
@@ -1,5 +1,4 @@
 include_defs('//VERSION')
-include_bucklets(['maven_package.bucklet'])
 
 DEPS = [
   '//gitiles-dev:dev',
diff --git a/bucklets.defs b/bucklets.defs
index 56c0a96..1ba5e0c 100644
--- a/bucklets.defs
+++ b/bucklets.defs
@@ -1,20 +1,27 @@
 import os
 import sys
 
-def include_bucklets(names):
-  d = os.getcwd()
-  while not os.path.lexists(os.path.join(d, '.buckversion')):
-    d = os.path.dirname(d)
+d = os.getcwd()
+while not os.path.lexists(os.path.join(d, '.buckversion')):
+  d = os.path.dirname(d)
 
-  bd = os.path.join(d, 'bucklets')
-  if not os.path.isdir(bd) or not os.listdir(bd):
-    sys.stderr.write(('Bucklets directory is missing or empty: %s\n'
-                      'Run `git submodule update --init`') % bd)
+bd = os.path.join(d, 'bucklets')
+if not os.path.isdir(bd) or not os.listdir(bd):
+  sys.stderr.write(('Bucklets directory is missing or empty: %s\n'
+                    'Run `git submodule update --init`') % bd)
+  sys.exit(1)
+
+bucklets = [
+  'java_doc.bucklet',
+  'java_sources.bucklet',
+  'maven_jar.bucklet',
+  'maven_package.bucklet',
+  'war.bucklet',
+]
+
+for bucklet in bucklets:
+  path = os.path.join(bd, bucklet)
+  if not os.path.isfile(path):
+    sys.stderr.write('Missing bucklet: %s\n' % path)
     sys.exit(1)
-
-  for name in names:
-    path = os.path.join(bd, name)
-    if not os.path.isfile(path):
-      sys.stderr.write('Missing bucklet: %s\n' % path)
-      sys.exit(1)
-    include_defs('//bucklets/%s' % name)
+  include_defs('//bucklets/%s' % bucklet)
diff --git a/gitiles-servlet/BUCK b/gitiles-servlet/BUCK
index df2f629..1bedf7c 100644
--- a/gitiles-servlet/BUCK
+++ b/gitiles-servlet/BUCK
@@ -1,8 +1,3 @@
-include_bucklets([
-  'java_sources.bucklet',
-  'java_doc.bucklet',
-])
-
 SRCS = glob(['src/main/java/**/*.java'])
 RSRC = glob(['src/main/resources/**/*'])
 DEPS = [
diff --git a/gitiles-war/BUCK b/gitiles-war/BUCK
index f51e211..268321d 100644
--- a/gitiles-war/BUCK
+++ b/gitiles-war/BUCK
@@ -1,5 +1,3 @@
-include_bucklets(['war.bucklet'])
-
 war(
   name = 'gitiles',
   libs = ['//gitiles-servlet:servlet'],
diff --git a/lib/BUCK b/lib/BUCK
index 8f398c0..449901d 100644
--- a/lib/BUCK
+++ b/lib/BUCK
@@ -1,5 +1,3 @@
-include_bucklets(['maven_jar.bucklet'])
-
 maven_jar(
   name = 'guava',
   id = 'com.google.guava:guava:16.0',
diff --git a/lib/guice/BUCK b/lib/guice/BUCK
index 7f4c4ef..eb2a260 100644
--- a/lib/guice/BUCK
+++ b/lib/guice/BUCK
@@ -1,5 +1,3 @@
-include_bucklets(['maven_jar.bucklet'])
-
 VERSION = '4.0-beta'
 EXCLUDE = [
   'META-INF/DEPENDENCIES',
diff --git a/lib/jetty/BUCK b/lib/jetty/BUCK
index e1043de..5f394c8 100644
--- a/lib/jetty/BUCK
+++ b/lib/jetty/BUCK
@@ -1,5 +1,3 @@
-include_bucklets(['maven_jar.bucklet'])
-
 VERS = '8.1.7.v20120910'
 EXCLUDE = ['about.html']
 
diff --git a/lib/jgit/BUCK b/lib/jgit/BUCK
index 828bbeb..b3edc23 100644
--- a/lib/jgit/BUCK
+++ b/lib/jgit/BUCK
@@ -1,5 +1,3 @@
-include_bucklets(['maven_jar.bucklet'])
-
 REPO = GERRIT
 VERS = '3.3.2.201404171909-r.128-g79448bc'
 
diff --git a/lib/slf4j/BUCK b/lib/slf4j/BUCK
index 4c99d52..4d43e55 100644
--- a/lib/slf4j/BUCK
+++ b/lib/slf4j/BUCK
@@ -1,5 +1,3 @@
-include_bucklets(['maven_jar.bucklet'])
-
 VERS = '1.6.1'
 
 maven_jar(
diff --git a/lib/soy/BUCK b/lib/soy/BUCK
index 9cef651..239c88c 100644
--- a/lib/soy/BUCK
+++ b/lib/soy/BUCK
@@ -1,5 +1,3 @@
-include_bucklets(['maven_jar.bucklet'])
-
 maven_jar(
   name = 'soy',
   id = 'com.google.template:soy:2014-04-22',
