diff --git a/tools/chkfrog.sh b/tools/chkfrog.sh
new file mode 100755
index 0000000000000000000000000000000000000000..6b896dd85b704ccb525b500c3e3bfbac287b1a21
--- /dev/null
+++ b/tools/chkfrog.sh
@@ -0,0 +1,90 @@
+#!/bin/bash
+
+# A script to check jfrog (bintray) for binaries existence and update package file
+#
+# Usage
+#
+#   chkfrog package...              Check packages
+#
+# Directory structure
+#
+#   Unfortunately, we need to have sha256 files locally to update URL correctly.
+#
+#   release/armv7l/*.tar.xz.sha256  SHA256 files for armv7l
+#   release/i686/*.tar.xz.sha256    SHA256 files for i686
+#   release/x86_64/*.tar.xz.sha256  SHA256 files for x86_64
+
+URL="https://dl.bintray.com/chromebrew/chromebrew"
+
+case $# in
+0) set `basename -s .rb packages/*`
+esac
+
+function update_url () {
+    if sed -e '/binary_url.*({/,/})/p; d' packages/$1.rb | grep -q $2:; then
+#       sed -e "/binary_url.*({/,/})/s,$2:.*,$2: '$3'," -i packages/$1.rb
+        sed -e "/$2:.*\(http\|https\|ftp\):/c\ \ \ \ $(printf %7s $2): '$3'," -i packages/$1.rb
+    else
+        sed -e "/binary_url.*({/a\ \ \ \ $(printf %7s $2): '$3'," -i packages/$1.rb
+    fi
+}
+function update_sha256 () {
+    if sed -e '/binary_sha256.*({/,/})/p; d' packages/$1.rb | grep -q $2:; then
+#       sed -e "/binary_sha256.*({/,/})/s,$2:.*,$2: '$3'," -i packages/$1.rb
+        sed -e "/$2:.*['\"][0-9a-f]*['\"]/c\ \ \ \ $(printf %7s $2): '$3'," -i packages/$1.rb
+    else
+        sed -e "/binary_sha256.*({/a\ \ \ \ $(printf %7s $2): '$3'," -i packages/$1.rb
+    fi
+}
+function get_sha256 () {
+    if [ -f release/$2/$1.sha256 ]; then
+        cut -d' ' -f1 release/$2/$1.sha256
+    else
+        echo not found
+    fi
+}
+function check_url () {
+    curl --output /dev/null --silent --header -L --fail $1
+}
+
+for name in "$@"; do 
+    name=`basename -s .rb $name`
+    pkg=`echo $name | sed -e 's/-.*//'`
+  
+    if ! grep -q binary_url packages/$pkg.rb; then
+        sed -e '/source_sha256/ a\
+\
+\ \ binary_url ({\
+\ \ })\
+\ \ binary_sha256 ({\
+\ \ })' -i packages/$pkg.rb
+    fi
+    version=`grep '\<version ['"'"'"]' packages/$pkg.rb | head -1 | sed -e 's/^.*version *['"'"'"]//' -e 's/['"'"'"].*$//'`
+    echo $pkg $version
+    for arch in x86_64 i686 armv7l; do
+        tarname="$pkg-$version-chromeos-$arch.tar"
+        if check_url "$URL/$tarname.xz"; then
+            url="$URL/$tarname.xz"
+            sha256=`get_sha256 $tarname.xz $arch`
+        elif check_url "$URL/$tarname.gz"; then
+            url="$URL/$tarname.gz"
+            sha256=`get_sha256 $tarname.gz $arch`
+        else
+            url=""
+        fi
+        echo $url : $sha256
+        case x$url in
+        x)  ;;
+        *)  
+            update_url $pkg $arch $url
+            update_sha256 $pkg $arch $sha256
+            case $arch in
+            armv7l)
+                update_url $pkg aarch64 $url
+                update_sha256 $pkg aarch64 $sha256
+                ;;
+            esac
+            ;;
+        esac
+    done
+done
diff --git a/create_package.sh b/tools/create_package.sh
old mode 100644
new mode 100755
similarity index 100%
rename from create_package.sh
rename to tools/create_package.sh
diff --git a/create_sha_list.sh b/tools/create_sha_list.sh
old mode 100644
new mode 100755
similarity index 100%
rename from create_sha_list.sh
rename to tools/create_sha_list.sh
diff --git a/create_url_list.sh b/tools/create_url_list.sh
old mode 100644
new mode 100755
similarity index 100%
rename from create_url_list.sh
rename to tools/create_url_list.sh
diff --git a/tools/upfrog.sh b/tools/upfrog.sh
new file mode 100755
index 0000000000000000000000000000000000000000..d017b09417ff3671a0fa65dff568231251c2a838
--- /dev/null
+++ b/tools/upfrog.sh
@@ -0,0 +1,109 @@
+#!/bin/bash
+
+# Upload script to jfrog (bintray)
+#
+# Usage
+#
+#   upfrog package...              Upload all version of packages
+#   upfrog package-version...      Upload only a given version of packages
+#   upfrog -t package...           Performs only dry-run (not upload)
+#   upfrog -d package...           Performs only debug-run (not execute jfrog)
+#
+# Note: OSS free account has limitation of the number of REST API uses by a day.
+#       If you see 'Forbidden' errors, please try it again in a next day.
+#
+
+ORG=chromebrew
+REPO=chromebrew
+DRYRUN=
+DEBUG=
+
+# Define your environment
+#
+#   LOCALPATHS:      Multiple paths for your pre-compiled binaries
+#   REGEXPLOCALPATH: Single path using regexp to points all of your LOCALPATHS.
+#                    If your LOCALPATHS contains single directory, still "(|)"
+#                    is required by jfrog, so write something like
+#                    "(real-path|dummy-path)".
+
+# For the case of multiple paths
+LOCALPATHS="release/armv7l release/i686 release/x86_64"
+REGEXPLOCALPATH="release/(armv7l|i686|x86_64)"
+
+# For the case of single paths
+#LOCALPATHS="release/bin"
+#REGEXPLOCALPATH="release/(bin|dummy_zzzzz)"
+
+case $1 in
+-d) # debug
+  DEBUG=1
+  DRYRUN=--dry-run
+  shift;;
+-t) # test
+  DRYRUN=--dry-run
+  shift;;
+esac
+
+function check_pkg () {
+  jfrog bt ps $ORG/$REPO/$1 > /dev/null 2> /dev/null
+}
+
+function create_pkg () {
+  jfrog bt pc $ORG/$REPO/$1 --pub-dn=true --vcs-url=https://github.com/ > /dev/null 2> /dev/null
+}
+
+function check_pkg_ver () {
+  jfrog bt vs $ORG/$REPO/$1/$2 > /dev/null 2> /dev/null
+}
+
+function upload_pkg_ver () {
+  jfrog bt u $DRYRUN --override=true --regexp "$REGEXPLOCALPATH/$1-$2-chrome.*\.tar\..z$" "$ORG/$REPO/$1/$2" # > /dev/null 2> /dev/null
+}
+
+function publish_pkg_ver () {
+  jfrog bt vp "$ORG/$REPO/$1/$2" # > /dev/null 2> /dev/null
+}
+
+function error () {
+  >&2 echo $1
+  exit 1
+}
+
+for name in "$@"; do 
+  name=`basename -s .rb $name`
+  pkg=`echo $name | sed -e 's/-.*//'`
+  
+  # check file existence
+  files=
+  for path in $LOCALPATHS; do 
+    for file in $path/$name-*.tar.?z; do
+      [ -f $file ] && files="$file $files"
+    done
+  done
+  [ -s "$files" ] && continue
+
+  # check version numbers
+  versions=
+  while read version; do
+    versions="$versions $version"
+  done < <(for file in $files; do
+    echo $file | sed -e "s:^.*/$pkg-::" -e 's:-chrome.*$::'
+  done | sort -n | uniq)
+
+  if [ ! -s $DEBUG ]; then
+    echo "$name -> $pkg, $versions: $files"
+    continue
+  fi
+
+  # create package first
+  check_pkg $pkg || create_pkg $pkg || error "failed to create $pkg package"
+
+  # upload and publish
+  for v in $versions; do
+    v=`echo $v | sed -e s/,/./g`
+    # check_pkg_ver $pkg $v || error "failed to check version $pkg-$v"
+    upload_pkg_ver $pkg $v || error "failed to upload $pkg-$v"
+    publish_pkg_ver $pkg $v || error "failed to publish $pkg-$v"
+  done
+done
+
diff --git a/upload_github_release.sh b/tools/upload_github_release.sh
old mode 100644
new mode 100755
similarity index 100%
rename from upload_github_release.sh
rename to tools/upload_github_release.sh