diff --git a/tools/build/onos-upload-bits b/tools/build/onos-upload-bits
index ae5b9c2..19eaada 100755
--- a/tools/build/onos-upload-bits
+++ b/tools/build/onos-upload-bits
@@ -6,7 +6,6 @@
 . $ONOS_ROOT/tools/build/envDefaults
 
 #FIXME need to export s3Creds
-#FIXME verify that ONOS_VERSION is set
+#TODO we could verify that ONOS_VERSION is set, and only upload that version
 
-# upload to EC2
-upload-to-s3 -d release/ /tmp/onos-$ONOS_VERSION.*
+python onosUploadBits.py
diff --git a/tools/build/onosUploadBits.py b/tools/build/onosUploadBits.py
new file mode 100755
index 0000000..284a509
--- /dev/null
+++ b/tools/build/onosUploadBits.py
@@ -0,0 +1,40 @@
+#!/usr/bin/env python
+# -----------------------------------------------------------------------------
+# Uploads ONOS distributable bits.
+# -----------------------------------------------------------------------------
+
+#FIXME need to export s3Creds
+
+import re
+from os import listdir
+from os.path import isfile, join
+
+from uploadToS3 import uploadFile
+
+nightlyTag = 'NIGHTLY'
+bitsPath = '/tmp'
+
+prefix = 'onos-(\d+\.\d+\.\d+)'
+buildNum = '\.?([\w-]*)'
+ext = '\.(?:tar\.gz|zip)'
+
+def findBits( path ):
+    for file in listdir( path ):
+        filePath = join( path, file )
+        if not isfile( filePath ):
+            continue
+
+        regex = prefix + buildNum + ext
+        match = re.match( regex, file )
+        if match:
+            version = match.group(1)
+            build = match.group(2)
+            if build:
+                if 'NIGHTLY' in build:
+                    uploadFile(filePath, dest='nightly/')
+            else:
+                #no build; this is a release
+                uploadFile(filePath, dest='release/')
+
+if __name__ == '__main__':
+    findBits( '/tmp' )
\ No newline at end of file
diff --git a/tools/build/upload-to-s3 b/tools/build/uploadToS3.py
similarity index 74%
rename from tools/build/upload-to-s3
rename to tools/build/uploadToS3.py
index 8b02d3b..a16235c 100755
--- a/tools/build/upload-to-s3
+++ b/tools/build/uploadToS3.py
@@ -1,5 +1,4 @@
-#!/usr/bin/python
-
+#!/usr/bin/env python
 """
 Upload a file to S3
 """
@@ -13,7 +12,7 @@
 from boto.s3.connection import S3Connection
 
 
-def uploadFile( bucket, filename, dest=None ):
+def uploadFile( filename, dest=None, bucket=None, overwrite=False ):
     "Upload a file to a bucket"
     if not bucket:
         bucket = 'onos'
@@ -37,10 +36,13 @@
     bucket = conn.get_bucket( bucket )
     k = Key( bucket )
     k.key = key
-    k.set_contents_from_filename( filename, cb=callback, num_cb=100 )
-    print
-    elapsed = time() - start
-    print "* elapsed time: %.2f seconds" % elapsed
+    if overwrite or not k.exists():
+        k.set_contents_from_filename( filename, cb=callback, num_cb=100 )
+        print
+        elapsed = time() - start
+        print "* elapsed time: %.2f seconds" % elapsed
+    else:
+        print 'file', basename( filename ), 'already exists in', bucket.name
 
 if __name__ == '__main__':
     usage = "Usage: %prog [options] <file to upload>"
@@ -53,11 +55,13 @@
                       help="Bucket on S3")
     parser.add_option("-s", "--secret", dest="awsSecret",
                       help="Bucket on S3")
+    parser.add_option("-f", "--force", dest="overwrite",
+                      help="Overwrite existing file")
     (options, args) = parser.parse_args()
     
     if len( args ) == 0:
         parser.error("missing filenames")
     for file in args:
-        uploadFile( options.bucket, file, options.dest )
+        uploadFile( file, options.dest, options.bucket, options.overwrite )
 
     #FIXME key and secret are unused
