diff --git a/config/common.mk b/config/common.mk
index 02b4bba..20c00b1 100644
--- a/config/common.mk
+++ b/config/common.mk
@@ -167,6 +167,9 @@
 # LatinIME dictionaries
 PRODUCT_PACKAGE_OVERLAYS += vendor/bliss/overlay/dictionaries
 
+# Squisher Location
+SQUISHER_SCRIPT := vendor/bliss/tools/squisher
+
 # Bliss Versioning System
 -include vendor/bliss/config/versions.mk
 
diff --git a/tools/colors b/tools/colors
new file mode 100644
index 0000000..6bfa58f
--- /dev/null
+++ b/tools/colors
@@ -0,0 +1,11 @@
+#!/bin/bash
+
+if [ ! "$BUILD_WITH_COLORS" = "0" ]; then
+    CL_RED="\033[31m"
+    CL_GRN="\033[32m"
+    CL_YLW="\033[33m"
+    CL_BLU="\033[34m"
+    CL_MAG="\033[35m"
+    CL_CYN="\033[36m"
+    CL_RST="\033[0m"
+fi
diff --git a/tools/crusher b/tools/crusher
new file mode 100755
index 0000000..1454def
--- /dev/null
+++ b/tools/crusher
@@ -0,0 +1,147 @@
+#!/bin/sh
+#
+# Super-mega crusher of doom
+# Shrinks apks by running pngquant or pngcrush or optipng or pngout on png images
+#
+# Point APKCERTS at the full path to a generated apkcerts.txt file, such as:
+# /home/shade/dev/sources/android-cm-eclair/out/target/product/dream_sapphire/obj/PACKAGING/target_files_intermediates/cyanogen_dream_sapphire-target_files-eng.shade/META/apkcerts.txt
+#
+# cyanogen - shade@chemlab.org
+# ChrisSoyars - me@ctso.me
+# Nougat fixes: Joe Maples - frap129@gmail.com
+
+set -e
+QUIET=1
+BASE=`pwd`
+TMPDIR=/tmp/crusher-$$
+
+. $ANDROID_BUILD_TOP/vendor/bliss/tools/colors
+
+if [ "$APKCERTS" = "" ];
+then
+    if [ "$TARGET_BUILD_VARIANT" = "userdebug" ]; then
+       TARGET_BUILD_VARIANT="eng"
+    elif [ "$TARGET_BUILD_VARIANT" = "user" ]; then
+       TARGET_BUILD_VARIANT="eng"
+    fi
+
+    APKCERTS=$OUT/obj/PACKAGING/target_files_intermediates/$TARGET_PRODUCT-target_files-$TARGET_BUILD_VARIANT.$USER/META/apkcerts.txt
+    if [ ! -f "$APKCERTS" ];
+    then
+        echo $CL_RED"Set APKCERTS to the path to your apkcerts.txt file"$CL_RST
+        exit 1;
+    fi
+fi
+
+if [ ! -f "$APKCERTS" ];
+then
+    echo $CL_RED"Invalid path to apkcerts.txt, set APKCERTS to the correct path."$CL_RST
+fi
+
+if [ "$(which pngquant)" != "" ];
+then
+    if [ "$(which optipng)" != "" ];
+    then
+        OPTSTRING='Quantizing and optimizing'
+        optimize_png () {
+            pngquant --speed 1 --force --ext .png $1 1> /dev/null 2> /dev/null;
+            optipng -o7 $1 1> /dev/null 2> /dev/null;
+        }
+    else
+        OPTSTRING='Quantizing'
+        optimize_png () {
+            pngquant --speed 1 --force --ext .png $1 1> /dev/null 2> /dev/null
+        }
+    fi
+else
+    if [ "$(which optipng)" != "" ];
+    then
+        OPTSTRING='Optimizing'
+        optimize_png () {
+            optipng -o7 $1 1> /dev/null 2> /dev/null;
+        }
+    else
+        echo $CL_RED"Please install pngquant or optipng (or both, for improved crushing)"$CL_RST
+        exit 1;
+    fi
+fi
+
+if [ "`which aapt`" = "" ];
+then
+    echo $CL_RED"Please ensure aapt is in your \$PATH"$CL_RST
+    exit 1;
+fi
+
+if [ "`which zipalign`" = "" ];
+then
+    echo $CL_RED"Please ensure zipalign is in your \$PATH"$CL_RST
+    exit 1;
+fi
+
+if [ -e "$1" ];
+then
+    NAME=`basename $1`;
+    echo $CL_CYN$OPTSTRING $CL_YLW"$NAME..."$CL_RST;
+
+    if [ "$2" != "" ];
+    then
+        CERT=build/target/product/security/$2.x509.pem
+        KEY=build/target/product/security/$2.pk8
+        if [ ! -f "$ANDROID_BUILD_TOP/$CERT" ];
+        then
+            echo $CL_RED"$CERT does not exist!";$CL_RST
+            exit 1;
+        fi
+    else
+        APKINFO=`grep "name=\"$NAME\"" $APKCERTS`;
+        [ $QUIET ] || echo "APKINFO: $APKINFO";
+        if [ "$APKINFO" = "" ];
+        then
+            echo $CL_RED"No apk info for $NAME";$CL_RST
+            exit 1;
+        fi
+        CERT=`echo $APKINFO | awk {'print $2'} | cut -f 2 -d "=" | tr -d "\""`;
+        KEY=`echo $APKINFO | awk {'print $3'} | cut -f 2 -d "=" | tr -d "\""`;
+        if [ "$CERT" = "" ];
+        then
+            echo -e $CL_RED"Unable to find certificate for $NAME"$CL_RST
+            exit 1;
+        fi
+        if [ "$CERT" = "PRESIGNED" ];
+        then
+            echo $CL_GRN"$NAME is presigned, skipping"$CL_RST
+            exit 1;
+        fi
+    fi
+
+    [ $QUIET ] || echo $CL_YLW"Certificate:"$CL_RST" $CERT";
+
+    [ -d $TMPDIR/$NAME ] && rm -rf $TMPDIR/$NAME
+    mkdir -p $TMPDIR/$NAME
+    trap "rm -rf $TMPDIR; exit" INT TERM EXIT
+    cd $TMPDIR/$NAME
+    unzip -q $BASE/$1
+    for x in `find . -name "*.png" | grep -v "\.9.png$" | tr "\n" " "`
+    do
+        [ $QUIET ] || echo $CL_GRN"Crushing $x"$CL_RST
+        optimize_png $x
+    done
+    cp $BASE/$1 $BASE/$1.old
+
+    [ $QUIET ] || echo $CL_GRN"Repacking apk.."$CL_RST
+    aapt p -0 .dat -0 .dict -0 .arsc -F $NAME .
+
+    [ $QUIET ] || echo $CL_YLW"Resigning with cert: `echo $CERT`"$CL_RST
+
+    [ $QUIET ] || echo java -Djava.library.path=$SIGNAPK_JNI_LIBRARY_PATH -jar $ANDROID_HOST_OUT/framework/signapk.jar $ANDROID_BUILD_TOP/$CERT $ANDROID_BUILD_TOP/$KEY $NAME signed_$NAME
+    java -Djava.library.path=$SIGNAPK_JNI_LIBRARY_PATH -jar $ANDROID_HOST_OUT/framework/signapk.jar $ANDROID_BUILD_TOP/$CERT $ANDROID_BUILD_TOP/$KEY $NAME signed_$NAME 
+    [ $QUIET ] || echo $CL_GRN"Zipalign.."$CL_RST
+    zipalign -f 4 signed_$NAME $BASE/$1
+    if [ ! $QUIET ]; then
+        ls -l $BASE/$1.old
+        ls -l $BASE/$1
+    fi
+    rm $BASE/$1.old
+else
+    echo "Usage: $0 [apk file]"
+fi
diff --git a/tools/squisher b/tools/squisher
new file mode 100755
index 0000000..ffae32e
--- /dev/null
+++ b/tools/squisher
@@ -0,0 +1,34 @@
+#!/bin/bash
+#
+# Squish a Bliss otapackage for distribution
+# BlissRoms
+
+. $ANDROID_BUILD_TOP/vendor/bliss/tools/colors
+
+OUT_TARGET_HOST=`uname -s`
+if [ x"$OUT_TARGET_HOST" = x"Linux" ]
+then
+   OUT_TARGET_HOST=linux-x86
+   XARGS="xargs --max-args=1 --max-procs `grep 'processor' /proc/cpuinfo|wc -l`"
+elif [ x"$OUT_TARGET_HOST" = x"Darwin" ]
+then
+   OUT_TARGET_HOST=darwin-x86
+   XARGS="xargs -n 1 -P `sysctl hw.ncpu | awk '{print $2}'`"
+else
+   echo -e ${CL_RED}"ERROR: unknown/unsupported host OS!"${CL_RST}
+   exit 1
+fi
+
+if [ -z "$OUT" -o ! -d "$OUT" ]; then
+	echo -e ${CL_RED}"ERROR: $0 only works with a full build environment. $OUT should exist."${CL_RST}
+	exit 1
+fi
+
+CRUSHER=$ANDROID_BUILD_TOP/vendor/bliss/tools/crusher
+QUIET=-q
+DELETE_BINS="applypatch applypatch_static check_prereq recovery updater"
+
+# Optimize PNG resources in APKs
+( cd $OUT/system; find framework/ app/ priv-app/ -name \*.apk -print | $XARGS $CRUSHER; )
+
+exit 0
