diff --git a/changelog.sh b/changelog.sh
new file mode 100755
index 0000000..8b758a0
--- /dev/null
+++ b/changelog.sh
@@ -0,0 +1,16 @@
+#!/bin/bash
+
+# To run this, simply cd to the Broken folder and run:
+
+# . build/changelog.sh :) *After syncing the repo.*
+
+_now=$(date +"%m-%d-%Y")
+_file=build/BrokenChangelog/$_now/Broken-Changelog-$_now.txt
+
+mkdir -p build/BrokenChangelog/
+
+mkdir -p build/BrokenChangelog/$_now
+
+chmod 777 -R build/BrokenChangelog
+
+repo forall -pc git log --reverse --no-merges --since=1.day.ago >  $_file
diff --git a/core/Makefile b/core/Makefile
index 2585ded..930d413 100644
--- a/core/Makefile
+++ b/core/Makefile
@@ -17,7 +17,7 @@
 LOCAL_PATH := $(BUILD_SYSTEM)
 
 # Pick a reasonable string to use to identify files.
-ifneq ($(SLIM_BUILD),)
+ifneq ($(BROKEN_BUILD),)
 ifneq "" "$(filter eng.%,$(BUILD_NUMBER))"
   # BUILD_NUMBER has a timestamp in it, which means that
   # it will change every time.  Pick a stable value.
@@ -210,7 +210,7 @@
 endif
 	$(hide) TARGET_BUILD_TYPE="$(TARGET_BUILD_VARIANT)" \
 			TARGET_DEVICE="$(TARGET_DEVICE)" \
-			SLIM_DEVICE="$(TARGET_DEVICE)" \
+			BROKEN_DEVICE="$(TARGET_DEVICE)" \
 			PRODUCT_NAME="$(TARGET_PRODUCT)" \
 			PRODUCT_BRAND="$(PRODUCT_BRAND)" \
 			PRODUCT_DEFAULT_LANGUAGE="$(call default-locale-language,$(PRODUCT_LOCALES))" \
@@ -988,7 +988,13 @@
     $(PDK_FUSION_SYSIMG_FILES) \
     $(RECOVERY_RESOURCE_ZIP))
 
-FULL_SYSTEMIMAGE_DEPS := $(INTERNAL_SYSTEMIMAGE_FILES) $(INTERNAL_USERIMAGES_DEPS)
+systemimage-squisher: $(INTERNAL_SYSTEMIMAGE_FILES)
+	@echo -e "Optimizing PNGs to Shrink ROM Size!"
+	$(hide) APKCERTS=$(APKCERTS_FILE) ./vendor/broken/tools/squisher
+
+.PHONY: systemimage-squisher
+
+FULL_SYSTEMIMAGE_DEPS := $(INTERNAL_SYSTEMIMAGE_FILES) $(INTERNAL_USERIMAGES_DEPS) systemimage-squisher
 # -----------------------------------------------------------------
 # installed file list
 # Depending on anything that $(BUILT_SYSTEMIMAGE) depends on.
@@ -1611,7 +1617,7 @@
 ifeq ($(WITH_GMS),true)
     $(INTERNAL_OTA_PACKAGE_TARGET): backuptool := false
 else
-ifneq ($(SLIM_BUILD),)
+ifneq ($(BROKEN_BUILD),)
     $(INTERNAL_OTA_PACKAGE_TARGET): backuptool := true
 else
     $(INTERNAL_OTA_PACKAGE_TARGET): backuptool := false
@@ -1624,8 +1630,8 @@
     $(INTERNAL_OTA_PACKAGE_TARGET): override_prop := true
 endif
 
-ifneq ($(SLIM_BUILD),)
-SLIM_TARGET_PACKAGE := $(PRODUCT_OUT)/$(SLIM_MOD_VERSION).zip
+ifneq ($(BROKEN_BUILD),)
+BROKEN_TARGET_PACKAGE := $(PRODUCT_OUT)/$(BROKEN_MOD_VERSION).zip
 endif
 
 ifeq ($(TARGET_OTA_ASSERT_DEVICE),)
@@ -1641,7 +1647,7 @@
 	$(hide) MKBOOTIMG=$(MKBOOTIMG) \
 	   CUSTOM_BOOTING_MK=$(BOARD_CUSTOM_BOOTIMG_MK) \
 	   $(OTA_FROM_TARGET_SCRIPT) -v \
-	   $(if $(SLIM_BUILD), --block) \
+	   $(if $(BROKEN_BUILD), --block) \
 	   -p $(HOST_OUT) \
 	   -k $(KEY_CERT_PAIR) \
 	   $(if $(OEM_OTA_CONFIG), -o $(OEM_OTA_CONFIG)) \
@@ -1649,17 +1655,43 @@
 	   --override_prop=$(override_prop) \
 	   $(BUILT_TARGET_FILES_PACKAGE) $@
 
-.PHONY: otapackage bacon bootzip
+.PHONY: otapackage broken bootzip
 otapackage: $(INTERNAL_OTA_PACKAGE_TARGET)
 
-bacon: check_bacon otapackage
-ifneq ($(SLIM_BUILD),)
-	$(hide) ln -f $(INTERNAL_OTA_PACKAGE_TARGET) $(SLIM_TARGET_PACKAGE)
-	$(hide) $(MD5SUM) $(SLIM_TARGET_PACKAGE) > $(SLIM_TARGET_PACKAGE).md5sum
-	@echo -e "Package Complete: $(SLIM_TARGET_PACKAGE)"
+broken: check_broken otapackage
+ifneq ($(BROKEN_BUILD),)
+	$(hide) ln -f $(INTERNAL_OTA_PACKAGE_TARGET) $(BROKEN_TARGET_PACKAGE)
+	$(hide) $(MD5SUM) $(BROKEN_TARGET_PACKAGE) > $(BROKEN_TARGET_PACKAGE).md5sum
+	@echo -e ${CL_CYN}""${CL_CYN}
+	@echo -e ${CL_CYN}"........................................................................................."${CL_CYN}
+	@echo -e ${CL_CYN}".....__________.....________.....________.....___...____...________....______...____....."${CL_CYN}
+	@echo -e ${CL_CYN}"....|    /  _   \..|  _\  / \.../  \   /  \..| _||./\  /..|  ___/__|..|  /   \.|  \ |...."${CL_CYN}
+	@echo -e ${CL_CYN}"....|   / \/    |..|\/   /\  |.|    \     _|.| \ |/  \/...|  |____....|  \_   \|  / |...."${CL_CYN}
+	@echo -e ${CL_CYN}"....|    \/     /..| \  /   /..|/    /\/ / |.|  \/   /....|\_ \   |...|  / \__  _/  |...."${CL_CYN}
+	@echo -e ${CL_CYN}"....| \__ \    /...| /\/ \ /...|   _/  \/  |.|    \  \....|  \/___|...|    /  \/    |...."${CL_CYN}
+	@echo -e ${CL_CYN}"....|    \/\   \...|/    / \...|  /  \     |.|/   /   \...|  / |____..|   / |\ \__  |...."${CL_CYN}
+	@echo -e ${CL_CYN}"....|    /_   _/\..|   |\   \..|      \    |.|\  |\    \..|  \   \_ |.|  /  |.\   \ |...."${CL_CYN}
+	@echo -e ${CL_CYN}"....|    /\  /   |.|___|.\_/_\..\_____/___/..|_\_|.\___/\.|___\_____|.|__\__|..\__ ||...."${CL_CYN}
+	@echo -e ${CL_CYN}"....|\__/   \    |..._________....._______.....________...........\_____________/........"${CL_CYN}
+	@echo -e ${CL_CYN}"....|       /\   |..| _  /  \ \.../\_   / \...|\  _/  /\........../  .       .  \........"${CL_CYN}
+	@echo -e ${CL_CYN}"....|      /  \  |..|/ \/    _/|.|   \__\  |..| \/ \_/\ |......__/_______________\__....."${CL_CYN}
+	@echo -e ${CL_CYN}"....|  /\_/   /  |..|   \___/_/..|   /   \ |..|  \ ____/......| .                 . |...."${CL_CYN}
+	@echo -e ${CL_CYN}"....| /    \     /..|   |........|__/\   / |..| _/|...........|_|_________________|_|...."${CL_CYN}
+	@echo -e ${CL_CYN}"....|_______\___/...|___|.........\_____/_/...|_\_|............\|                 |/....."${CL_CYN}
+	@echo -e ${CL_CYN}"................................................................|________|________|......"${CL_CYN}
+	@echo -e ${CL_CYN}"................................................................|________|________|......"${CL_CYN}
+	@echo -e ${CL_CYN}"................................................................|__/__\__|__/__\__|......"${CL_CYN}
+	@echo -e ${CL_CYN}"........................................................................................."${CL_CYN}
+	@echo -e ${CL_RST}""${CL_RST}
+	@echo -e ${CL_YLW}"................................Shits Done......Getcha Some.............................."${CL_YLW}
+	@echo -e ${CL_YLW}".....................................More fun Than iOs..................................."${CL_YLW}
+	@echo -e ${CL_RST}""${CL_RST}
+	@echo -e ${CL_BLU}"========================================================================================="${CL_BLU}
+	@echo -e ${CL_RST}"$(BROKEN_TARGET_PACKAGE)"${CL_RST}
+	@echo -e ${CL_BLU}"========================================================================================="${CL_BLU}
 endif
 
-check_bacon:
+check_broken:
 ifneq ($(TARGET_CUSTOM_RELEASETOOL),)
         $(error TARGET_CUSTOM_RELEASETOOL is deprecated)
 endif
diff --git a/core/apicheck_msg_current.txt b/core/apicheck_msg_current.txt
index 403ebba..4883918 100644
--- a/core/apicheck_msg_current.txt
+++ b/core/apicheck_msg_current.txt
@@ -10,7 +10,7 @@
          make %UPDATE_API%
       ^^^^^^^^^^^^^^^^^^
       NO. NO. STOP BEING LAZY. SERIOUSLY.
-      DO NOT DO THIS in SLIM. THIS IS A LIE. IT WILL BREAK THINGS.
+      DO NOT DO THIS in BROKEN. THIS IS A LIE. IT WILL BREAK THINGS.
 
       To submit the revised current.txt to the main Android repository,
       you will need approval.
diff --git a/core/combo/TARGET_linux-arm.mk b/core/combo/TARGET_linux-arm.mk
index 52573b4..577d307 100644
--- a/core/combo/TARGET_linux-arm.mk
+++ b/core/combo/TARGET_linux-arm.mk
@@ -142,6 +142,14 @@
 
 $(combo_2nd_arch_prefix)TARGET_GLOBAL_CPPFLAGS += -fvisibility-inlines-hidden
 
+# option to enable pipe
+ifeq ($(TARGET_USE_PIPE),true)
+    TARGET_arm_CFLAGS += -pipe
+    TARGET_thumb_CFLAGS += -pipe
+    TARGET_GLOBAL_CFLAGS += -pipe
+    TARGET_RELEASE_CFLAGS += -pipe
+endif
+
 # More flags/options can be added here
 $(combo_2nd_arch_prefix)TARGET_RELEASE_CFLAGS := \
 			-DNDEBUG \
diff --git a/core/combo/TARGET_linux-x86.mk b/core/combo/TARGET_linux-x86.mk
index 15ee249..e70acfc 100644
--- a/core/combo/TARGET_linux-x86.mk
+++ b/core/combo/TARGET_linux-x86.mk
@@ -98,6 +98,11 @@
 
 $(combo_2nd_arch_prefix)TARGET_GLOBAL_CFLAGS += $(arch_variant_cflags)
 
+# option to enable pipe
+ifeq ($(TARGET_USE_PIPE),true)
+    TARGET_GLOBAL_CFLAGS += -pipe
+endif
+
 ifeq ($(ARCH_X86_HAVE_SSSE3),true)   # yes, really SSSE3, not SSE3!
     $(combo_2nd_arch_prefix)TARGET_GLOBAL_CFLAGS += -DUSE_SSSE3 -mssse3
 endif
diff --git a/core/config.mk b/core/config.mk
index 38e1d4a..ac903d0 100644
--- a/core/config.mk
+++ b/core/config.mk
@@ -629,11 +629,11 @@
 # Rules for QCOM targets
 include $(BUILD_SYSTEM)/qcom_target.mk
 
-ifneq ($(SLIM_BUILD),)
+ifneq ($(BROKEN_BUILD),)
 
 ## We need to be sure the global selinux policies are included
 ## last, to avoid accidental resetting by device configs
-$(eval include vendor/slim/sepolicy/sepolicy.mk)
+$(eval include vendor/broken/sepolicy/sepolicy.mk)
 endif
 
 include $(BUILD_SYSTEM)/dumpvar.mk
diff --git a/core/dumpvar.mk b/core/dumpvar.mk
index b34247e..739a9b8 100644
--- a/core/dumpvar.mk
+++ b/core/dumpvar.mk
@@ -67,7 +67,7 @@
 $(info ============================================)
 $(info   PLATFORM_VERSION_CODENAME=$(PLATFORM_VERSION_CODENAME))
 $(info   PLATFORM_VERSION=$(PLATFORM_VERSION))
-$(info   SLIM_VERSION=$(SLIM_VERSION))
+$(info   BROKEN_VERSION=$(BROKEN_VERSION))
 $(info   TARGET_PRODUCT=$(TARGET_PRODUCT))
 $(info   TARGET_BUILD_VARIANT=$(TARGET_BUILD_VARIANT))
 $(info   TARGET_BUILD_TYPE=$(TARGET_BUILD_TYPE))
diff --git a/core/main.mk b/core/main.mk
index ffe1cd6..97a2f25 100644
--- a/core/main.mk
+++ b/core/main.mk
@@ -71,7 +71,7 @@
 
 # These goals don't need to collect and include Android.mks/CleanSpec.mks
 # in the source tree.
-dont_bother_goals := clean clobber dataclean installclean \
+dont_bother_goals := clean clobber dataclean dirty installclean \
     help out \
     snod systemimage-nodeps \
     stnod systemtarball-nodeps \
@@ -1061,6 +1061,14 @@
 .PHONY: clobber
 clobber: clean
 
+# Clears out zip and build.prop
+.PHONY: dirty
+dirty:
+	@rm -rf $(OUT_DIR)/target/product/*/system/build.prop
+	@rm -rf $(OUT_DIR)/target/product/*/*.zip
+	@rm -rf $(OUT_DIR)/target/product/*/*.md5sum
+	@echo -e ${CL_GRN}"build.prop and zip files erased"${CL_RST}
+
 # The rules for dataclean and installclean are defined in cleanbuild.mk.
 
 #xxx scrape this from ALL_MODULE_NAME_TAGS
diff --git a/core/product_config.mk b/core/product_config.mk
index a40bf6f..0be1372 100644
--- a/core/product_config.mk
+++ b/core/product_config.mk
@@ -184,8 +184,8 @@
 all_product_configs := $(call get-product-makefiles,\
     $(SRC_TARGET_DIR)/product/AndroidProducts.mk)
 else
-  ifneq ($(SLIM_BUILD),)
-    all_product_configs := $(shell ls device/*/$(SLIM_BUILD)/slim.mk)
+  ifneq ($(BROKEN_BUILD),)
+    all_product_configs := $(shell ls device/*/$(BROKEN_BUILD)/broken.mk)
   else
     # Read in all of the product definitions specified by the AndroidProducts.mk
     # files in the tree.
@@ -193,7 +193,7 @@
   endif
 endif
 
-ifeq ($(SLIM_BUILD),)
+ifeq ($(BROKEN_BUILD),)
 # Find the product config makefile for the current product.
 # all_product_configs consists items like:
 # <product_name>:<path_to_the_product_makefile>
diff --git a/envsetup.sh b/envsetup.sh
index d9d61ca..0ec32ab 100644
--- a/envsetup.sh
+++ b/envsetup.sh
@@ -22,7 +22,7 @@
 - aospremote: Add git remote for matching AOSP repository
 - cafremote: Add git remote for matching CodeAurora repository.
 - cmremote: Add a git remote for matching CM repository.
-- slimremote: Add a git remote for matching SLIM repository.
+- brokenremote: Add a git remote for matching BROKEN repository.
 - mka:      Builds using SCHED_BATCH on all processors
 - reposync: Parallel repo sync using ionice and SCHED_BATCH
 
@@ -70,12 +70,12 @@
         return
     fi
 
-    if (echo -n $1 | grep -q -e "^slim_") ; then
-       SLIM_BUILD=$(echo -n $1 | sed -e 's/^slim_//g')
+    if (echo -n $1 | grep -q -e "^broken_") ; then
+       BROKEN_BUILD=$(echo -n $1 | sed -e 's/^broken_//g')
     else
-       SLIM_BUILD=
+       BROKEN_BUILD=
     fi
-    export SLIM_BUILD
+    export BROKEN_BUILD
 
         TARGET_PRODUCT=$1 \
         TARGET_BUILD_VARIANT= \
@@ -511,7 +511,7 @@
 {
     breakfast $*
     if [ $? -eq 0 ]; then
-mka bacon
+mka broken
     else
 echo "No such item in brunch menu. Try 'breakfast'"
         return 1
@@ -534,10 +534,10 @@
 {
     target=$1
     local variant=$2
-    SLIM_DEVICES_ONLY="true"
+    BROKEN_DEVICES_ONLY="true"
     unset LUNCH_MENU_CHOICES
     add_lunch_combo full-eng
-    for f in `/bin/ls vendor/slim/vendorsetup.sh 2> /dev/null`
+    for f in `/bin/ls vendor/broken/vendorsetup.sh 2> /dev/null`
         do
 echo "including $f"
             . $f
@@ -553,11 +553,11 @@
             # A buildtype was specified, assume a full device name
             lunch $target
         else
-            # This is probably just the SLIM model name
+            # This is probably just the BROKEN model name
             if [ -z "$variant" ]; then
                 variant="userdebug"
             fi
-            lunch slim_$target-$variant
+            lunch broken_$target-$variant
         fi
 fi
 return $?
@@ -604,7 +604,7 @@
     check_product $product
     if [ $? -ne 0 ]
     then
-        # if we can't find a product, try to grab it off the SlimRoms github
+        # if we can't find a product, try to grab it off the BrokenOs github
         T=$(gettop)
         pushd $T > /dev/null
         build/tools/roomservice.py $product
@@ -758,8 +758,8 @@
 function eat()
 {
     if [ "$OUT" ] ; then
-        MODVERSION=`sed -n -e'/ro\.slim\.version/s/.*=//p' $OUT/system/build.prop`
-        ZIPFILE=slim-$MODVERSION.zip
+        MODVERSION=`sed -n -e'/ro\.broken\.version/s/.*=//p' $OUT/system/build.prop`
+        ZIPFILE=broken-$MODVERSION.zip
         ZIPPATH=$OUT/$ZIPFILE
         if [ ! -f $ZIPPATH ] ; then
             echo "Nothing to eat"
@@ -1651,9 +1651,9 @@
     echo "Remote 'cm' created"
 }
 
-function slimremote()
+function brokenremote()
 {
-    git remote rm slim 2> /dev/null
+    git remote rm broken 2> /dev/null
     PFX=""
     if [ ! -d .git ]
     then
@@ -1667,8 +1667,8 @@
 
     PROJECT="$(echo $PROJ | sed 's/\//_/g')"
 
-    git remote add slim git@github.com:SlimRoms/$PFX$PROJECT
-    echo "Remote 'slim' created"
+    git remote add broken git@github.com:BrokenOs/$PFX$PROJECT
+    echo "Remote 'broken' created"
     fi
 }
 
diff --git a/target/product/full_base.mk b/target/product/full_base.mk
index 5e59f8a..c3f257f 100644
--- a/target/product/full_base.mk
+++ b/target/product/full_base.mk
@@ -40,7 +40,7 @@
 PRODUCT_AAPT_CONFIG := normal hdpi xhdpi xxhdpi
 
 # Get some sounds
-$(call inherit-product-if-exists, frameworks/base/data/sounds/AllAudioSlim.mk)
+$(call inherit-product-if-exists, frameworks/base/data/sounds/AllAudioBroken.mk)
 
 # Get the TTS language packs
 $(call inherit-product-if-exists, external/svox/pico/lang/all_pico_languages.mk)
diff --git a/target/product/languages_full.mk b/target/product/languages_full.mk
index 900d531..19ad051 100644
--- a/target/product/languages_full.mk
+++ b/target/product/languages_full.mk
@@ -23,5 +23,5 @@
 # by TextView in this branch.
 PRODUCT_LOCALES := en_AU en_US en_IN fr_FR it_IT es_ES et_EE de_DE nl_NL cs_CZ pl_PL ja_JP zh_TW zh_CN zh_HK ru_RU ko_KR nb_NO es_US da_DK el_GR tr_TR pt_PT pt_BR rm_CH sv_SE bg_BG ca_ES en_GB fi_FI hi_IN hr_HR hu_HU in_ID iw_IL lt_LT lv_LV ro_RO sk_SK sl_SI sr_RS uk_UA vi_VN tl_PH ar_EG fa_IR th_TH sw_TZ ms_MY af_ZA zu_ZA am_ET hi_IN en_XA ar_XB fr_CA km_KH lo_LA ne_NP si_LK mn_MN hy_AM az_AZ ka_GE my_MM mr_IN ml_IN is_IS mk_MK ky_KG eu_ES gl_ES bn_BD ta_IN kn_IN te_IN uz_UZ ur_PK kk_KZ
 
-# SlimRoms
+# BrokenOs
 +PRODUCT_LOCALES += cy_GB
diff --git a/target/product/locales_full.mk b/target/product/locales_full.mk
index 4ef663b..6110f21 100644
--- a/target/product/locales_full.mk
+++ b/target/product/locales_full.mk
@@ -1,6 +1,6 @@
 PRODUCT_LOCALES := en_US cs_CZ da_DK de_AT de_CH de_DE de_LI el_GR en_AU en_CA en_GB en_NZ en_SG eo_EU es_ES fr_CA fr_CH fr_BE fr_FR it_CH it_IT ja_JP ko_KR nb_NO nl_BE nl_NL pl_PL pt_PT ru_RU sv_SE tr_TR zh_CN zh_HK zh_TW am_ET hi_IN
 
-# SlimRoms
+# BrokenOs
 PRODUCT_LOCALES += cy_GB
 
 $(call inherit-product, build/target/product/languages_full.mk)
diff --git a/target/product/sdk_base.mk b/target/product/sdk_base.mk
index f7b0f05..7284133 100644
--- a/target/product/sdk_base.mk
+++ b/target/product/sdk_base.mk
@@ -69,7 +69,7 @@
 
 include $(SRC_TARGET_DIR)/product/emulator.mk
 
-$(call inherit-product-if-exists, frameworks/base/data/sounds/AllAudioSlim.mk)
+$(call inherit-product-if-exists, frameworks/base/data/sounds/AllAudioBroken.mk)
 $(call inherit-product-if-exists, frameworks/base/data/fonts/fonts.mk)
 $(call inherit-product-if-exists, external/google-fonts/dancing-script/fonts.mk)
 $(call inherit-product-if-exists, external/google-fonts/carrois-gothic-sc/fonts.mk)
diff --git a/tools/buildinfo.sh b/tools/buildinfo.sh
index 354eb76..c3cbc12 100755
--- a/tools/buildinfo.sh
+++ b/tools/buildinfo.sh
@@ -55,8 +55,8 @@
   echo "# Do not try to parse thumbprint"
   echo "ro.build.thumbprint=$BUILD_THUMBPRINT"
 fi
-echo "ro.slim.device=$TARGET_DEVICE"
-echo "ro.slim.model=$PRODUCT_MODEL"
+echo "ro.broken.device=$TARGET_DEVICE"
+echo "ro.broken.model=$PRODUCT_MODEL"
 echo "ro.build.characteristics=$TARGET_AAPT_CHARACTERISTICS"
 
 echo "# end build properties"
diff --git a/tools/releasetools/boot_flash_from_image b/tools/releasetools/boot_flash_from_image
index 90dc16e..4b4a76e 100755
--- a/tools/releasetools/boot_flash_from_image
+++ b/tools/releasetools/boot_flash_from_image
@@ -1,7 +1,7 @@
 #!/usr/bin/env python
 #
 # Copyright (C) 2008 The Android Open Source Project
-# Copyright (C) 2013 SlimRoms
+# Copyright (C) 2013 BrokenOs
 #
 # Licensed under the Apache License, Version 2.0 (the "License");
 # you may not use this file except in compliance with the License.
@@ -47,11 +47,11 @@
     prekernel_version = search('CONFIG_LOCALVERSION=.*\n', open(defconfig, 'r').read())
     if prekernel_version:
         kernel_version = sub(r'(CONFIG_LOCALVERSION=)|\"|\n|-', "", prekernel_version.group(0))
-        kernel_version = "%s-%s-kernel" % (kernel_version or "Slim", device)
+        kernel_version = "%s-%s-kernel" % (kernel_version or "Broken", device)
     else:
-        kernel_version = "Slim-%s-kernel" % device
+        kernel_version = "Broken-%s-kernel" % device
 else:
-    kernel_version = "Slim-%s-kernel" % device
+    kernel_version = "Broken-%s-kernel" % device
 
 updater = "%s/obj/EXECUTABLES/updater_intermediates/updater" % out
 signer = "%s/framework/signapk.jar" % environ['ANDROID_HOST_OUT']
@@ -88,7 +88,7 @@
 updater_script = "%s/updater-script" % updater_dir
 
 # create the contents
-contents = "ui_print(\"installing Slim Kernel...\");\n"
+contents = "ui_print(\"installing Broken Kernel...\");\n"
 if boot_partition_type == "mtd":
     contents += "package_extract_file(\"boot.img\", \"/tmp/boot.img\");\n"
     contents += "write_raw_image(\"/tmp/boot.img\", \"%s\");\n" % boot_partition
diff --git a/tools/releasetools/edify_generator.py b/tools/releasetools/edify_generator.py
index 3496405..c1898a8 100644
--- a/tools/releasetools/edify_generator.py
+++ b/tools/releasetools/edify_generator.py
@@ -166,7 +166,7 @@
         self.script.append('delete("/system/bin/otasigcheck.sh");')
     else:
         self.script.append('package_extract_file("system/bin/otasigcheck.sh", "/tmp/otasigcheck.sh");')
-        self.script.append('package_extract_file("META-INF/org/slimroms/releasekey", "/tmp/releasekey");')
+        self.script.append('package_extract_file("META-INF/org/brokenos/releasekey", "/tmp/releasekey");')
         self.script.append('set_metadata("/tmp/otasigcheck.sh", "uid", 0, "gid", 0, "mode", 0755);')
         self.script.append('run_program("/tmp/otasigcheck.sh") == "0" || abort("Can\'t install this package on top of incompatible data. Please try another package or run a factory reset");')
 
diff --git a/tools/releasetools/ota_from_target_files b/tools/releasetools/ota_from_target_files
index 8114784..bdd1fb0 100755
--- a/tools/releasetools/ota_from_target_files
+++ b/tools/releasetools/ota_from_target_files
@@ -594,18 +594,33 @@
 
   system_progress = 0.75
 
-  script.Print("                    _____________________ ")
-  script.Print("                   /     www.slimroms.net|")
-  script.Print("                  /                      |")
-  script.Print("                 /    ___________________|")
-  script.Print("                /    /    ___             ")
-  script.Print("               /    / ___/   \            ")
-  script.Print("              /    / /   \___/____   ____ ")
-  script.Print("             /    /  |   |___/    \_/    |")
-  script.Print(" ___________/    /   |   |   |           |")
-  script.Print("|               /    |   |   |   |   |   |")
-  script.Print("|              /     |   |   |   |   |   |")
-  script.Print("|_____________/      \___^___^___^___^___/")
+  script.Print(" ")
+  script.Print(" ***************Its*a*ROM**************** ")
+  script.Print(" ***********Its*a*way*of*life************ ")
+  script.Print(" *************Its,*Its,*Its..************ ")
+  script.Print(" ........................................ ")
+  script.Print(" . ___...___...._...._..._..___...__.._.. ")
+  script.Print(" .| . \.| . \../ \..| |/ /.| __|.|  \| |. ")
+  script.Print(" .|   /.|   /.| . |.|   /..|   |.|     |. ")
+  script.Print(" .| B \.| R \.| O |.| K \..| E_|.|  N  |. ")
+  script.Print(" .| .  ||_|\_\.\ /..|_|\_\.|___|.|_| \_|. ")
+  script.Print(" .|___/.................................. ")
+  script.Print(" .._________....._______.....________.... ")
+  script.Print(" .| _  /  \ \.../\_   / \...|\  _/  /\... ")
+  script.Print(" .|/ \/ P  _|..|   \O_\  |..| \/ P /\|... ")
+  script.Print(" .| / \___/_/..|   /   \ |..|  \ ____/... ")
+  script.Print(" .|  _|........|__/\   / |..| _/|........ ")
+  script.Print(" .|_/_|.........\_____/_/...|_\_|........ ")
+  script.Print(" .................//..................... ")
+  script.Print(" ..A.............//...................... ")
+  script.Print(" ..Custom.......//.........BrokenOs...... ")
+  script.Print(" ..AOSP........//.........Android 5.0.... ")
+  script.Print(" ..Based...................Lollipop...... ")
+  script.Print(" ..ROM................................... ")
+  script.Print(" ........................................ ")
+  script.Print(" **********Dysfunctional**ROMs*********** ")
+  script.Print(" ***********More*fun*than*iOs************ ")
+  script.Print(" ********Now*Get*On*With*The*Show******** ")
   script.Print(" ")
 
   if OPTIONS.wipe_user_data:
@@ -741,7 +756,7 @@
   script.AddToZip(input_zip, output_zip, input_path=OPTIONS.updater_binary)
   WriteMetadata(metadata, output_zip)
 
-  common.ZipWriteStr(output_zip, "META-INF/org/slimroms/releasekey",
+  common.ZipWriteStr(output_zip, "META-INF/org/brokenos/releasekey",
                      ""+input_zip.read("META/releasekey.txt"))
 
 def WritePolicyConfig(file_context, output_zip):
diff --git a/tools/repopick.py b/tools/repopick.py
index 2e956ec..423a480 100755
--- a/tools/repopick.py
+++ b/tools/repopick.py
@@ -45,7 +45,7 @@
 # Parse the command line
 parser = argparse.ArgumentParser(formatter_class=argparse.RawDescriptionHelpFormatter, description=textwrap.dedent('''\
     repopick.py is a utility to simplify the process of cherry picking
-    patches from SlimRoms's Gerrit instance.
+    patches from BrokenOs's Gerrit instance.
 
     Given a list of change numbers, repopick will cd into the project path
     and cherry pick the latest patch available.
@@ -188,7 +188,7 @@
 
 # Get all commits for a specified topic
 if args.topic:
-    url = 'http://gerrit.slimroms.net/changes/?q=topic:%s' % args.topic
+    url = 'http://gerrit.brokenos.net/changes/?q=topic:%s' % args.topic
     if args.verbose:
         print('Fetching all commits from topic: %s\n' % args.topic)
     f = urllib.request.urlopen(url)
@@ -237,7 +237,7 @@
     # gerrit returns two lines, a magic string and then valid JSON:
     #   )]}'
     #   [ ... valid JSON ... ]
-    url = 'https://gerrit.slimroms.net/changes/?q=%s&o=CURRENT_REVISION&o=CURRENT_COMMIT&pp=0' % change
+    url = 'https://gerrit.brokenos.net/changes/?q=%s&o=CURRENT_REVISION&o=CURRENT_COMMIT&pp=0' % change
     if args.verbose:
         print('Fetching from: %s\n' % url)
     f = urllib.request.urlopen(url)
diff --git a/tools/roomservice.py b/tools/roomservice.py
index d378e3e..2358ac6 100755
--- a/tools/roomservice.py
+++ b/tools/roomservice.py
@@ -1,6 +1,6 @@
 #!/usr/bin/env python
 # Copyright (C) 2012 The CyanogenMod Project
-# Copyright (C) 2012/2013 SlimRoms Project
+# Copyright (C) 2012/2013 BrokenOs Project
 #
 # Licensed under the Apache License, Version 2.0 (the "License");
 # you may not use this file except in compliance with the License.
@@ -34,13 +34,13 @@
     device = product
 
 if not depsonly:
-    print "Device %s not found. Attempting to retrieve device repository from SlimRoms Github (http://github.com/SlimRoms)." % device
+    print "Device %s not found. Attempting to retrieve device repository from BrokenOs Github (http://github.com/BrokenOs)." % device
 
 repositories = []
 
 page = 1
 while not depsonly:
-    result = json.loads(urllib2.urlopen("https://api.github.com/users/SlimRoms/repos?page=%d" % page).read())
+    result = json.loads(urllib2.urlopen("https://api.github.com/users/BrokenOs/repos?page=%d" % page).read())
     if len(result) == 0:
         break
     for res in result:
@@ -80,7 +80,7 @@
 
 def get_from_manifest(devicename):
     try:
-        lm = ElementTree.parse(".repo/local_manifests/slim_manifest.xml")
+        lm = ElementTree.parse(".repo/local_manifests/broken_manifest.xml")
         lm = lm.getroot()
     except:
         lm = ElementTree.Element("manifest")
@@ -104,7 +104,7 @@
 
 def is_in_manifest(projectname, branch):
     try:
-        lm = ElementTree.parse(".repo/local_manifests/slim_manifest.xml")
+        lm = ElementTree.parse(".repo/local_manifests/broken_manifest.xml")
         lm = lm.getroot()
     except:
         lm = ElementTree.Element("manifest")
@@ -117,7 +117,7 @@
 
 def add_to_manifest_dependencies(repositories):
     try:
-        lm = ElementTree.parse(".repo/local_manifests/slim_manifest.xml")
+        lm = ElementTree.parse(".repo/local_manifests/broken_manifest.xml")
         lm = lm.getroot()
     except:
         lm = ElementTree.Element("manifest")
@@ -131,7 +131,7 @@
                 print 'Updating dependency %s' % (repo_name)
                 existing_project.set('name', repository['repository'])
             if existing_project.attrib['revision'] == repository['branch']:
-                print 'SlimRoms/%s already exists' % (repo_name)
+                print 'BrokenOs/%s already exists' % (repo_name)
             else:
                 print 'updating branch for %s to %s' % (repo_name, repository['branch'])
                 existing_project.set('revision', repository['branch'])
@@ -139,7 +139,7 @@
 
         print 'Adding dependency: %s -> %s' % (repo_name, repo_target)
         project = ElementTree.Element("project", attrib = { "path": repo_target,
-            "remote": "github", "name": repo_name, "revision": "lp5.0" })
+            "remote": "github", "name": repo_name, "revision": "lp" })
 
         if 'branch' in repository:
             project.set('revision',repository['branch'])
@@ -150,13 +150,13 @@
     raw_xml = ElementTree.tostring(lm)
     raw_xml = '<?xml version="1.0" encoding="UTF-8"?>\n' + raw_xml
 
-    f = open('.repo/local_manifests/slim_manifest.xml', 'w')
+    f = open('.repo/local_manifests/broken_manifest.xml', 'w')
     f.write(raw_xml)
     f.close()
 
 def add_to_manifest(repositories):
     try:
-        lm = ElementTree.parse(".repo/local_manifests/slim_manifest.xml")
+        lm = ElementTree.parse(".repo/local_manifests/broken_manifest.xml")
         lm = lm.getroot()
     except:
         lm = ElementTree.Element("manifest")
@@ -167,15 +167,15 @@
         existing_project = exists_in_tree_device(lm, repo_name)
         if existing_project != None:
             if existing_project.attrib['revision'] == repository['branch']:
-                print 'SlimRoms/%s already exists' % (repo_name)
+                print 'BrokenOs/%s already exists' % (repo_name)
             else:
-                print 'updating branch for SlimRoms/%s to %s' % (repo_name, repository['branch'])
+                print 'updating branch for BrokenOs/%s to %s' % (repo_name, repository['branch'])
                 existing_project.set('revision', repository['branch'])
             continue
 
-        print 'Adding dependency: SlimRoms/%s -> %s' % (repo_name, repo_target)
+        print 'Adding dependency: BrokenOs/%s -> %s' % (repo_name, repo_target)
         project = ElementTree.Element("project", attrib = { "path": repo_target,
-            "remote": "github", "name": "SlimRoms/%s" % repo_name, "revision": "lp5.0" })
+            "remote": "github", "name": "BrokenOs/%s" % repo_name, "revision": "lp" })
 
         if 'branch' in repository:
             project.set('revision', repository['branch'])
@@ -186,13 +186,13 @@
     raw_xml = ElementTree.tostring(lm)
     raw_xml = '<?xml version="1.0" encoding="UTF-8"?>\n' + raw_xml
 
-    f = open('.repo/local_manifests/slim_manifest.xml', 'w')
+    f = open('.repo/local_manifests/broken_manifest.xml', 'w')
     f.write(raw_xml)
     f.close()
 
 def fetch_dependencies(repo_path):
     print 'Looking for dependencies'
-    dependencies_path = repo_path + '/slim.dependencies'
+    dependencies_path = repo_path + '/broken.dependencies'
     syncable_repos = []
 
     if os.path.exists(dependencies_path):
@@ -235,7 +235,7 @@
 
             repo_path = "device/%s/%s" % (manufacturer, device)
 
-            add_to_manifest([{'repository':repo_name,'target_path':repo_path,'branch':'lp5.0'}])
+            add_to_manifest([{'repository':repo_name,'target_path':repo_path,'branch':'lp'}])
 
             print "Syncing repository to retrieve project."
             os.system('repo sync %s' % repo_path)
@@ -245,4 +245,4 @@
             print "Done"
             sys.exit()
 
-print "Repository for %s not found in the SlimRoms Github repository list. If this is in error, you may need to manually add it to .repo/local_manifests/slim_manifest.xml" % device
+print "Repository for %s not found in the BrokenOs Github repository list. If this is in error, you may need to manually add it to .repo/local_manifests/broken_manifest.xml" % device
