diff --git a/full_stingray.mk b/full_stingray.mk
index dbe292c..1c8f143 100644
--- a/full_stingray.mk
+++ b/full_stingray.mk
@@ -23,6 +23,7 @@
 PRODUCT_PACKAGES := \
         HoloSpiralWallpaper \
         LiveWallpapersPicker \
+        rild \
         VisualizationWallpapers
 
 # Inherit from those products. Most specific first.
diff --git a/proprietary-blobs.txt b/proprietary-blobs.txt
deleted file mode 100644
index 4660d81..0000000
--- a/proprietary-blobs.txt
+++ /dev/null
@@ -1,110 +0,0 @@
-# Copyright (C) 2011 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-# This file is generated by device/common/generate-blob-lists.sh - DO NOT EDIT
-
-/system/app/AppDirectedSmsService.apk
-/system/app/ConnMO.apk
-/system/app/DMService.apk
-/system/app/MotoImsServer.apk
-/system/app/MotoLocationProxy.apk
-/system/app/MotoLteTelephony.apk
-/system/app/MotoModemUtil.apk
-/system/app/MotoSimUiHelper.apk
-/system/app/StingrayProgramMenu.apk
-/system/app/StingrayProgramMenuSystem.apk
-/system/bin/akmd2
-/system/bin/batch
-/system/bin/brcm_guci_drv
-/system/bin/bugtogo.sh
-/system/bin/bypassfactory
-/system/bin/ftmipcd
-/system/bin/location
-/system/bin/savebpver
-/system/bin/tcmd
-/system/etc/cpcap_gain.bin
-/system/etc/firmware/bcm4329.hcd
-/system/etc/firmware/nvddk_audiofx_core.axf
-/system/etc/firmware/nvddk_audiofx_transport.axf
-/system/etc/firmware/nvmm_aacdec.axf
-/system/etc/firmware/nvmm_adtsdec.axf
-/system/etc/firmware/nvmm_audiomixer.axf
-/system/etc/firmware/nvmm_h264dec.axf
-/system/etc/firmware/nvmm_jpegdec.axf
-/system/etc/firmware/nvmm_jpegenc.axf
-/system/etc/firmware/nvmm_manager.axf
-/system/etc/firmware/nvmm_mp2dec.axf
-/system/etc/firmware/nvmm_mp3dec.axf
-/system/etc/firmware/nvmm_mpeg4dec.axf
-/system/etc/firmware/nvmm_reference.axf
-/system/etc/firmware/nvmm_service.axf
-/system/etc/firmware/nvmm_sorensondec.axf
-/system/etc/firmware/nvmm_sw_mp3dec.axf
-/system/etc/firmware/nvmm_wavdec.axf
-/system/etc/firmware/nvrm_avp.bin
-/system/etc/gps.conf
-/system/etc/gpsconfig.xml
-/system/etc/location.cfg
-/system/etc/motorola/12m/key_code_map.txt
-/system/etc/motorola/12m/tcmd_leds.cfg
-/system/etc/security/suplcerts.bks
-/system/etc/voip_aud_params.bin
-/system/etc/wifi/bcm4329.cal
-/system/lib/egl/libEGL_perfhud.so
-/system/lib/egl/libEGL_tegra.so
-/system/lib/egl/libGLESv1_CM_perfhud.so
-/system/lib/egl/libGLESv1_CM_tegra.so
-/system/lib/egl/libGLESv2_perfhud.so
-/system/lib/egl/libGLESv2_tegra.so
-/system/lib/hw/camera.stingray.so
-/system/lib/hw/gps.stingray.so
-/system/lib/hw/gralloc.tegra.so
-/system/lib/hw/hwcomposer.tegra.so
-/system/lib/libcgdrv.so
-/system/lib/libdmengine.so
-/system/lib/libdmjavaplugin.so
-/system/lib/libims_client_jni.so
-/system/lib/libmoto_ecnswrapper.so
-/system/lib/libnvddk_2d.so
-/system/lib/libnvddk_2d_v2.so
-/system/lib/libnvddk_audiofx.so
-/system/lib/libnvdispatch_helper.so
-/system/lib/libnvdispmgr_d.so
-/system/lib/libnvmm.so
-/system/lib/libnvmm_camera.so
-/system/lib/libnvmm_contentpipe.so
-/system/lib/libnvmm_image.so
-/system/lib/libnvmm_manager.so
-/system/lib/libnvmm_service.so
-/system/lib/libnvmm_tracklist.so
-/system/lib/libnvmm_utils.so
-/system/lib/libnvmm_video.so
-/system/lib/libnvodm_imager.so
-/system/lib/libnvodm_query.so
-/system/lib/libnvomx.so
-/system/lib/libnvomxilclient.so
-/system/lib/libnvos.so
-/system/lib/libnvrm.so
-/system/lib/libnvrm_channel.so
-/system/lib/libnvrm_graphics.so
-/system/lib/libnvsm.so
-/system/lib/libnvwsi.so
-/system/lib/libpkip.so
-/system/lib/libstagefrighthw.so
-/system/lib/libtpa.so
-/system/lib/libtpa_core.so
-/system/media/bootanimation-encrypted.zip
-/system/media/bootanimation.zip
-/system/vendor/etc/audio_effects.conf
-/system/vendor/firmware/fw_bcm4329_mfg.bin
diff --git a/self-extractors/Android.mk b/self-extractors/Android.mk
deleted file mode 100644
index e69de29..0000000
--- a/self-extractors/Android.mk
+++ /dev/null
diff --git a/self-extractors/PART1 b/self-extractors/PART1
deleted file mode 100644
index 935267e..0000000
--- a/self-extractors/PART1
+++ /dev/null
@@ -1,12 +0,0 @@
-#
-# Usage is subject to the enclosed license agreement
-
-echo
-echo The license for this software will now be displayed.
-echo You must agree to this license before using this software.
-echo
-echo -n Press Enter to view the license
-read dummy
-echo
-
-more << __EOF__
diff --git a/self-extractors/PART2 b/self-extractors/PART2
deleted file mode 100644
index 30e8d43..0000000
--- a/self-extractors/PART2
+++ /dev/null
@@ -1,22 +0,0 @@
-__EOF__
-
-if test $? != 0
-then
-  echo ERROR: Couldn\'t display license file 1>&2
-  exit 1
-fi
-
-echo
-
-echo -n Type \"I ACCEPT\" if you agree to the terms of the license:\ 
-read typed
-
-if test "$typed" != I\ ACCEPT
-then
-  echo
-  echo You didn\'t accept the license. Extraction aborted.
-  exit 2
-fi
-
-echo
-
diff --git a/self-extractors/PART3 b/self-extractors/PART3
deleted file mode 100644
index 6847be5..0000000
--- a/self-extractors/PART3
+++ /dev/null
@@ -1,12 +0,0 @@
-
-if test $? != 0
-then
-  echo
-  echo ERROR: Couldn\'t extract files. 1>&2
-  exit 3
-else
-  echo
-  echo Files extracted successfully.
-fi
-exit 0
-
diff --git a/self-extractors/PROLOGUE b/self-extractors/PROLOGUE
deleted file mode 100644
index c856ef1..0000000
--- a/self-extractors/PROLOGUE
+++ /dev/null
@@ -1,2 +0,0 @@
-#!/bin/bash
-#
diff --git a/self-extractors/broadcom/COPYRIGHT b/self-extractors/broadcom/COPYRIGHT
deleted file mode 100644
index bf44774..0000000
--- a/self-extractors/broadcom/COPYRIGHT
+++ /dev/null
@@ -1 +0,0 @@
-# (C) Broadcom Corporation
diff --git a/self-extractors/broadcom/LICENSE b/self-extractors/broadcom/LICENSE
deleted file mode 100644
index 312dec7..0000000
--- a/self-extractors/broadcom/LICENSE
+++ /dev/null
@@ -1,218 +0,0 @@
-THIS DEVELOPER SOFTWARE LICENSE AGREEMENT (THE "AGREEMENT") IS A LEGALLY
-BINDING AGREEMENT BETWEEN BROADCOM CORPORATION ("LICENSOR") AND
-YOU OR THE LEGAL ENTITY YOU REPRESENT ("You" or its possessive, "Your"). BY
-TYPING "I ACCEPT" WHERE INDICATED YOU ACKNOWLEDGE THAT YOU HAVE READ THIS
-AGREEMENT, UNDERSTAND IT AND AGREE TO BE BOUND BY ITS TERMS AND CONDITIONS. IF
-YOU DO NOT AGREE TO THESE TERMS YOU MUST DISCONTINUE THE INSTALLATION PROCESS
-AND YOU SHALL NOT USE THE SOFTWARE OR RETAIN ANY COPIES OF THE SOFTWARE OR
-DOCUMENTATION. ANY USE OR POSSESSION OF THE SOFTWARE BY YOU IS SUBJECT TO THE
-TERMS AND CONDITIONS SET FORTH IN THIS AGREEMENT. IF THE SOFTWARE IS INSTALLED
-ON A COMPUTER OWNED BY A CORPORATION OR OTHER LEGAL ENTITY, THEN YOU REPRESENT
-AND WARRANT THAT YOU HAVE THE AUTHORITY TO BIND SUCH ENTITY TO THE TERMS AND
-CONDITIONS OF THIS AGREEMENT.
-
-   1.  Special Definitions
-
-      a.  The term "Android" means the open source mobile platform, software
-          stack, operating system, middleware, application programming
-          interfaces and mobile applications under the trade-name "Android"
-          distributed at Android.com.
-
-      b.  The term "Android Applications" means a software application or
-          open-source contribution developed by You, designed to operate with
-          Android that does not contain or incorporate any of the Software.
-
-      c.  The term "Authorized Android Enabled Device" means the device
-          identified on the site from which You downloaded the Software.
-          The term "Software" means the Licensor's proprietary software and
-          libraries in object code form, designed for use on the Authorized
-          Android Enabled Device.
-
-      d.  The term "Authorized Android Enabled Device Software" means a
-          packaged build for Authorized Android Enabled Devices, consisting of
-          files suitable for installation on an Authorized Android Enabled
-          Device using a mechanism such as fastboot mode or recovery mode.
-
-   2.  License Grant
-
-      a.  Subject to the terms of this Agreement, Licensor hereby grants to
-          You, free of charge, a non-exclusive, non-sublicensable,
-          non-transferable, limited license, during the term of this Agreement,
-          to download, install and use the Software internally in
-          machine-readable (i.e., object code) form and the Documentation for
-          non-commercial use on an Authorized Android Enabled Device and
-          non-commercial redistribution of the Authorized Android Enabled
-          Device Software (the "Limited Purpose"). You may grant your end users
-          the right to use the Software for the Limited Purpose. The license to
-          the Software granted to You hereunder is solely for the Limited
-          Purpose set forth in this section, and the Software shall not be used
-          for any other purpose.
-
-   3.  Restrictions
-
-      a.  Retention of Rights. The entire right, title and interest in the
-          Software shall remain with Licensor and, unless specified in writing
-          hereunder, no rights are granted to any of the Software. Except for
-          the right to use the Software for the Limited Purpose, the delivery
-          of the Software to You does not convey to You any intellectual
-          property rights in the Software, including, but not limited to any
-          rights under any patent, trademark, copyright, or trade secret.
-          Neither the delivery of the Software to You nor any terms set forth
-          herein shall be construed to grant to You, either expressly, by
-          implication or by way of estoppel, any license under any patents or
-          other intellectual property rights covering or relating to any other
-          product or invention or any combination of the Software with any
-          other product. Any rights not expressly granted to You herein are
-          reserved by Licensor.
-
-      b.  No Commercialization or Distribution of the Software and
-          Documentation. Except as expressly provided in Section 2 of this
-          Agreement, You shall have no right to (i) copy, disclose, distribute,
-          publically perform, publically display, transfer, alter, modify,
-          translate, disassemble, decompile, reverse engineer, or adapt the
-          Software and Documentation, or any portion thereof, or create any
-          derivative works based thereon; (ii) rent, lease, assign, sublicense,
-          resell, disclose or otherwise transfer the Software and Documentation
-          in whole or in part to any third party (iii) use the Software and
-          Documentation except for the Limited Purpose, (iv) remove or alter
-          any of the copyright or proprietary notices contained in any of the
-          Software and Documentation. For the purposes of clarity, nothing in
-          this Agreement prohibits You from making and distributing Android
-          Applications under commercial or non-commercial terms, provided that
-          You shall not contain, incorporate, and/or compile the Software or
-          any of its derivative works, in whole or in part, into Your Android
-          Applications and/or any software/devices created by You or by third
-          parties acting on Your behalf. You and any such third party shall
-          comply with all of the terms and conditions of this Agreement.
-
-      c.  No Reverse Engineering. Except for any portions of the Software
-          provided to You in source code format and except for any third party
-          code distributed with the Software that is licensed under contrary
-          terms, You will not reverse engineer, disassemble,
-          decompile, or translate the Software, or otherwise attempt to derive
-          the source code version of the Software, except if and to the extent
-          expressly permitted under any applicable law.
-
-      d.  Third Party Software. You agree that Android may contain third party
-          software. You agree that you may not distribute such third party
-          software for any purpose without appropriate licenses from the
-          applicable third party or parties.
-
-      e.  No Transfer or Assignment. You shall not assign any of its rights or
-          obligations under this Agreement. Any attempted assignment in
-          contravention of this Section shall be void.
-
-   4.  Indemnity
-
-      a.  You agree to indemnify and hold harmless Licensor and its officers,
-          directors, customers, employees and successors and assigns (each an
-          "Indemnified Party") against any and all claims, demands, causes of
-          action, losses, liabilities, damages, costs and expenses, incurred by
-          the Indemnified Party (including but not limited to costs of defense,
-          investigation and reasonable attorney's fees) arising out of,
-          resulting from or related to (i) any software, products,
-          documentation, content, materials or derivative works created or
-          developed by You using the Software which causes an infringement of
-          any patent, copyright, trademark, trade secret, or other property,
-          publicity or privacy rights of any third parties arising in any
-          jurisdiction anywhere in the world, (ii) the download, distribution,
-          installation, storage, execution, use or transfer of such software,
-          products, documentation, content, materials or derivative works by
-          any person or entity, and/or (iii) any breach of this Agreement by
-          You. If requested by an Indemnified Party, You agree to defend such
-          Indemnified Party in connection with any third party claims, demands,
-          or causes of action resulting from, arising out of or in connection
-          with any of the foregoing.
-
-   5.  Limitation of Liability
-
-      a.  TO THE MAXIMUM EXTENT PERMITTED UNDER APPLICABLE LAWS, UNDER NO
-          CIRCUMSTANCES, INCLUDING WITHOUT LIMITATION NEGLIGENCE, SHALL
-          LICENSOR, ITS AFFILIATES AND/OR ITS DIRECTORS, OFFICERS, EMPLOYEES OR
-          AGENTS BE LIABLE FOR ANY INDIRECT, INCIDENTAL, SPECIAL, PUNITIVE OR
-          CONSEQUENTIAL DAMAGES (INCLUDING BUT NOT LIMITED TO DAMAGES FOR LOSS
-          OF BUSINESS PROFITS, BUSINESS INTERRUPTION, LOSS OF BUSINESS
-          INFORMATION AND THE LIKE) ARISING OUT OF OR IN CONNECTION WITH THE
-          SOFTWARE OR ANY DOWNLOAD, INSTALLATION OR USE OF, OR INABILITY TO
-          USE, THE SOFTWARE, EVEN IF LICENSOR HAS BEEN ADVISED OF THE
-          POSSIBILITY OF SUCH DAMAGES. SOME JURISDICTIONS DO NOT ALLOW THE
-          LIMITATION OR EXCLUSION OF LIABILITY FOR INCIDENTAL OR CONSEQUENTIAL
-          DAMAGES SO THE ABOVE LIMITATION OR EXCLUSION MAY NOT APPLY OR MAY BE
-          LIMITED. IN NO EVENT SHALL LICENSOR'S TOTAL AGGREGATE LIABILITY TO
-          YOU FOR ANY AND ALL DAMAGES, LOSSES, CLAIMS AND CAUSES OF ACTIONS
-          (WHETHER IN CONTRACT, TORT, INCLUDING NEGLIGENCE, INDEMNIFICATION OR
-          OTHERWISE) EXCEED ONE HUNDRED U.S. DOLLARS (US$100). THE LIMITATIONS
-          SET FORTH IN THIS PARAGRAPH SHALL BE DEEMED TO APPLY TO THE MAXIMUM
-          EXTENT PERMITTED BY APPLICABLE LAW. THE PARTIES HAVE FULLY CONSIDERED
-          THE FOREGOING ALLOCATION OF RISK AND FIND IT REASONABLE, AND THAT THE
-          FOREGOING LIMITATIONS IN THIS PARAGRAPH ARE AN ESSENTIAL BASIS OF
-          THE BARGAIN BETWEEN THE PARTIES.
-
-   6.  No Warranty
-
-      a.  LICENSOR MAKES NO WARRANTIES, EXPRESS OR IMPLIED, WITH RESPECT TO THE
-          SOFTWARE AND DOCUMENTATION PROVIDED UNDER THIS AGREEMENT, INCLUDING
-          BUT NOT LIMITED TO ANY WARRANTY OF MERCHANTABILITY OR FITNESS FOR A
-          PARTICULAR PURPOSE OR AGAINST INFRINGEMENT, OR ANY EXPRESS OR IMPLIED
-          WARRANTY ARISING OUT OF TRADE USAGE OR OUT OF A COURSE OF DEALING OR
-          COURSE OF PERFORMANCE. NOTHING CONTAINED IN THIS AGREEMENT SHALL BE
-          CONSTRUED AS A WARRANTY OR REPRESENTATION BY LICENSOR (I) AS TO THE
-          VALIDITY OR SCOPE OF ANY PATENT, COPYRIGHT OR OTHER INTELLECTUAL
-          PROPERTY RIGHT AND (II) THAT ANY MANUFACTURE OR USE WILL BE FREE FROM
-          INFRINGEMENT OF PATENTS, COPYRIGHTS OR OTHER INTELLECTUAL PROPERTY
-          RIGHTS OF OTHERS, AND IT SHALL BE THE SOLE RESPONSIBILITY OF YOU TO
-          MAKE SUCH DETERMINATION AS IS NECESSARY WITH RESPECT TO THE
-          ACQUISITION OF LICENSES UNDER PATENTS AND OTHER INTELLECTUAL PROPERTY
-          OF THIRD PARTIES. LICENSOR SHALL NOT HAVE ANY OBLIGATION TO PROVIDE
-          ANY TECHNICAL SUPPORT OF THE SOFTWARE UNDER THIS AGREEMENT.
-
-   7.  Term and Termination
-
-      a.  This Agreement shall be effective on the date You accept this
-          Agreement and shall remain in effect until terminated as provided
-          herein. You may terminate the Agreement at any time by deleting and
-          destroying all copies of the Software and all related information in
-          Your possession or control. This Agreement terminates immediately and
-          automatically, with or without notice, if You fail to comply with any
-          provision hereof.  Additionally, Licensor may at any time terminate
-          this Agreement, without cause, upon notice to You. Upon termination
-          You must delete or destroy all copies of the Software in Your
-          possession, and the license granted to You in this Agreement shall
-          terminate. Sections 3, 4, 5, 6 and 8 shall survive the termination of
-          this Agreement.
-
-   8.  Miscellaneous
-
-      a.  Governing Law. This Agreement is governed and interpreted in
-          accordance with the laws of the State of California without giving
-          effect to its conflict of laws provisions. The United Nations
-          Convention on Contracts for the International Sale of Goods is
-          expressly disclaimed and shall not apply. Any claim arising out of or
-          related to this Agreement must be brought exclusively in a federal or
-          state court located in Santa Clara County, California and You consent
-          to the jurisdiction and venue of such courts.
-
-      b.  Waiver and Severability. The failure of either party to require
-          performance by the other party of any provision of this Agreement
-          shall not affect the full right to require such performance at any
-          time thereafter; nor shall the waiver by either party of a breach of
-          any provision of this Agreement be taken or held to be a waiver of
-          the provision itself. Severability. If any provision of this
-          Agreement is unenforceable or invalid under any applicable law or is
-          so held by applicable court decision, such unenforceability or
-          invalidity shall not render this Agreement unenforceable or invalid
-          as a whole, and such provision shall be changed and interpreted so as
-          to best accomplish the objectives of such unenforceable or invalid
-          provision within the limits of applicable law or applicable court
-          decisions.
-
-      c.  Amendment and Modification. This Agreement and any of its terms and
-          provisions may only be amended, modified, supplemented or waived in a
-          writing signed by both parties hereto.
-
-      d.  Compliance with Laws. You shall comply with all applicable laws,
-          rules, and regulations in connection with its activities under this
-          Agreement.
-
-      e.  Entire Agreement. This Agreement completely and exclusively states
-          the agreement between You and Licensor regarding this subject matter.
diff --git a/self-extractors/broadcom/staging/BoardConfigStingray.mk b/self-extractors/broadcom/staging/BoardConfigStingray.mk
deleted file mode 100644
index 851a7a8..0000000
--- a/self-extractors/broadcom/staging/BoardConfigStingray.mk
+++ /dev/null
@@ -1,13 +0,0 @@
-# Copyright (C) 2011 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
diff --git a/self-extractors/broadcom/staging/device-stingray.mk b/self-extractors/broadcom/staging/device-stingray.mk
deleted file mode 100644
index ea7c17d..0000000
--- a/self-extractors/broadcom/staging/device-stingray.mk
+++ /dev/null
@@ -1,21 +0,0 @@
-# Copyright (C) 2011 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-LOCAL_PATH := vendor/broadcom/stingray
-
-# Broadcom blobs necessary for stingray hardware
-PRODUCT_COPY_FILES := \
-    $(LOCAL_PATH)/proprietary/bcm4329.hcd:system/etc/firmware/bcm4329.hcd \
-    $(LOCAL_PATH)/proprietary/bcm4329.cal:system/etc/wifi/bcm4329.cal \
-    $(LOCAL_PATH)/proprietary/fw_bcm4329_mfg.bin:system/vendor/firmware/fw_bcm4329_mfg.bin
diff --git a/self-extractors/generate-packages.sh b/self-extractors/generate-packages.sh
deleted file mode 100755
index 80ce27e..0000000
--- a/self-extractors/generate-packages.sh
+++ /dev/null
@@ -1,142 +0,0 @@
-#!/bin/sh
-
-# Copyright (C) 2011 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-# 201632 = IRL06C
-# 236517 = IML70C
-# 237179 = IML73
-# 237867 = IML74B
-# 238432 = IML74E
-# 238649 = IML74G
-# 239410 = IML74K
-# 262866 = IMM30D
-# 299849 = IMM76D
-# end ics-mr1
-BRANCH=ics-mr1
-if test $BRANCH=ics-mr1
-then
-  ZIP=trygon-ota-299849.zip
-  BUILD=imm76d
-fi
-ROOTDEVICE=stingray
-DEVICE=stingray
-MANUFACTURER=moto
-
-for COMPANY in nvidia broadcom
-do
-  echo Processing files from $COMPANY
-  rm -rf tmp
-  FILEDIR=tmp/vendor/$COMPANY/$DEVICE/proprietary
-  mkdir -p $FILEDIR
-  mkdir -p tmp/vendor/$MANUFACTURER/$ROOTDEVICE
-  case $COMPANY in
-  broadcom)
-    TO_EXTRACT="\
-            system/etc/firmware/bcm4329.hcd \
-            system/etc/wifi/bcm4329.cal \
-            system/vendor/firmware/fw_bcm4329_mfg.bin
-            "
-    ;;
-  nvidia)
-    TO_EXTRACT="\
-            system/etc/firmware/nvmm_aacdec.axf \
-            system/etc/firmware/nvddk_audiofx_core.axf \
-            system/etc/firmware/nvddk_audiofx_transport.axf \
-            system/etc/firmware/nvmm_adtsdec.axf \
-            system/etc/firmware/nvmm_audiomixer.axf \
-            system/etc/firmware/nvmm_h264dec.axf \
-            system/etc/firmware/nvmm_jpegdec.axf \
-            system/etc/firmware/nvmm_jpegenc.axf \
-            system/etc/firmware/nvmm_manager.axf \
-            system/etc/firmware/nvmm_mp2dec.axf \
-            system/etc/firmware/nvmm_mp3dec.axf \
-            system/etc/firmware/nvmm_mpeg4dec.axf \
-            system/etc/firmware/nvmm_reference.axf \
-            system/etc/firmware/nvmm_service.axf \
-            system/etc/firmware/nvmm_sorensondec.axf \
-            system/etc/firmware/nvmm_sw_mp3dec.axf \
-            system/etc/firmware/nvmm_wavdec.axf \
-            system/etc/firmware/nvrm_avp.bin \
-            system/lib/egl/libEGL_tegra.so \
-            system/lib/egl/libGLESv1_CM_tegra.so \
-            system/lib/egl/libGLESv2_tegra.so \
-            system/lib/hw/gralloc.tegra.so \
-            system/lib/hw/hwcomposer.tegra.so \
-            system/lib/libcgdrv.so \
-            system/lib/libnvddk_2d.so \
-            system/lib/libnvddk_2d_v2.so \
-            system/lib/libnvddk_audiofx.so \
-            system/lib/libnvdispatch_helper.so \
-            system/lib/libnvdispmgr_d.so \
-            system/lib/libnvmm.so \
-            system/lib/libnvmm_camera.so \
-            system/lib/libnvmm_contentpipe.so \
-            system/lib/libnvmm_image.so \
-            system/lib/libnvmm_manager.so \
-            system/lib/libnvmm_service.so \
-            system/lib/libnvmm_tracklist.so \
-            system/lib/libnvmm_utils.so \
-            system/lib/libnvmm_video.so \
-            system/lib/libnvomx.so \
-            system/lib/libnvomxilclient.so \
-            system/lib/libnvos.so \
-            system/lib/libnvrm.so \
-            system/lib/libnvrm_channel.so \
-            system/lib/libnvrm_graphics.so \
-            system/lib/libnvsm.so \
-            system/lib/libnvwsi.so \
-            system/lib/libstagefrighthw.so
-            "
-    ;;
-  esac
-  echo \ \ Extracting files from OTA package
-  for ONE_FILE in $TO_EXTRACT
-  do
-    echo \ \ \ \ Extracting $ONE_FILE
-    unzip -j -o $ZIP $ONE_FILE -d $FILEDIR > /dev/null || echo \ \ \ \ Error extracting $ONE_FILE
-    if test $ONE_FILE = system/vendor/bin/gpsd -o $ONE_FILE = system/vendor/bin/pvrsrvinit
-    then
-      chmod a+x $FILEDIR/$(basename $ONE_FILE) || echo \ \ \ \ Error chmoding $ONE_FILE
-    fi
-    if test $(echo $ONE_FILE | grep \\.apk\$ | wc -l) = 1
-    then
-      echo \ \ \ \ Splitting $ONE_FILE
-      mkdir -p $FILEDIR/$(basename $ONE_FILE).parts || echo \ \ \ \ Error making parts dir for $ONE_FILE
-      unzip $FILEDIR/$(basename $ONE_FILE) -d $FILEDIR/$(basename $ONE_FILE).parts > /dev/null || echo \ \ \ \ Error unzipping $ONE_FILE
-      rm $FILEDIR/$(basename $ONE_FILE) || echo \ \ \ \ Error removing original $ONE_FILE
-      rm -rf $FILEDIR/$(basename $ONE_FILE).parts/META-INF || echo \ \ \ \ Error removing META-INF for $ONE_FILE
-    fi
-  done
-  echo \ \ Setting up $COMPANY-specific makefiles
-  cp -R $COMPANY/staging/* tmp/vendor/$COMPANY/$DEVICE || echo \ \ \ \ Error copying makefiles
-  echo \ \ Setting up shared makefiles
-  cp -R root/* tmp/vendor/$MANUFACTURER/$ROOTDEVICE || echo \ \ \ \ Error copying makefiles
-  echo \ \ Generating self-extracting script
-  SCRIPT=extract-$COMPANY-$DEVICE.sh
-  cat PROLOGUE > tmp/$SCRIPT || echo \ \ \ \ Error generating script
-  cat $COMPANY/COPYRIGHT >> tmp/$SCRIPT || echo \ \ \ \ Error generating script
-  cat PART1 >> tmp/$SCRIPT || echo \ \ \ \ Error generating script
-  cat $COMPANY/LICENSE >> tmp/$SCRIPT || echo \ \ \ \ Error generating script
-  cat PART2 >> tmp/$SCRIPT || echo \ \ \ \ Error generating script
-  echo tail -n +$(expr 2 + $(cat PROLOGUE $COMPANY/COPYRIGHT PART1 $COMPANY/LICENSE PART2 PART3 | wc -l)) \$0 \| tar zxv >> tmp/$SCRIPT || echo \ \ \ \ Error generating script
-  cat PART3 >> tmp/$SCRIPT || echo \ \ \ \ Error generating script
-  (cd tmp ; tar zc --owner=root --group=root vendor/ >> $SCRIPT || echo \ \ \ \ Error generating embedded tgz)
-  chmod a+x tmp/$SCRIPT || echo \ \ \ \ Error generating script
-  ARCHIVE=$COMPANY-$DEVICE-$BUILD-$(md5sum < tmp/$SCRIPT | cut -b -8 | tr -d \\n).tgz
-  rm -f $ARCHIVE
-  echo \ \ Generating final archive
-  (cd tmp ; tar --owner=root --group=root -z -c -f ../$ARCHIVE $SCRIPT || echo \ \ \ \ Error archiving script)
-  rm -rf tmp
-done
diff --git a/self-extractors/nvidia/COPYRIGHT b/self-extractors/nvidia/COPYRIGHT
deleted file mode 100644
index c7c4a32..0000000
--- a/self-extractors/nvidia/COPYRIGHT
+++ /dev/null
@@ -1 +0,0 @@
-# (C) NVIDIA Corporation
diff --git a/self-extractors/nvidia/LICENSE b/self-extractors/nvidia/LICENSE
deleted file mode 100644
index fc98233..0000000
--- a/self-extractors/nvidia/LICENSE
+++ /dev/null
@@ -1,218 +0,0 @@
-THIS DEVELOPER SOFTWARE LICENSE AGREEMENT (THE "AGREEMENT") IS A LEGALLY
-BINDING AGREEMENT BETWEEN NVIDIA CORPORATION ("LICENSOR") AND
-YOU OR THE LEGAL ENTITY YOU REPRESENT ("You" or its possessive, "Your"). BY
-TYPING "I ACCEPT" WHERE INDICATED YOU ACKNOWLEDGE THAT YOU HAVE READ THIS
-AGREEMENT, UNDERSTAND IT AND AGREE TO BE BOUND BY ITS TERMS AND CONDITIONS. IF
-YOU DO NOT AGREE TO THESE TERMS YOU MUST DISCONTINUE THE INSTALLATION PROCESS
-AND YOU SHALL NOT USE THE SOFTWARE OR RETAIN ANY COPIES OF THE SOFTWARE OR
-DOCUMENTATION. ANY USE OR POSSESSION OF THE SOFTWARE BY YOU IS SUBJECT TO THE
-TERMS AND CONDITIONS SET FORTH IN THIS AGREEMENT. IF THE SOFTWARE IS INSTALLED
-ON A COMPUTER OWNED BY A CORPORATION OR OTHER LEGAL ENTITY, THEN YOU REPRESENT
-AND WARRANT THAT YOU HAVE THE AUTHORITY TO BIND SUCH ENTITY TO THE TERMS AND
-CONDITIONS OF THIS AGREEMENT.
-
-   1.  Special Definitions
-
-      a.  The term "Android" means the open source mobile platform, software
-          stack, operating system, middleware, application programming
-          interfaces and mobile applications under the trade-name "Android"
-          distributed at Android.com.
-
-      b.  The term "Android Applications" means a software application or
-          open-source contribution developed by You, designed to operate with
-          Android that does not contain or incorporate any of the Software.
-
-      c.  The term "Authorized Android Enabled Device" means only the device
-          identified on the site from which You downloaded the Software.
-          The term "Software" means the Licensor's proprietary software and
-          libraries in object code form, designed for use on the Authorized
-          Android Enabled Device.
-
-      d.  The term "Authorized Android Enabled Device Software" means a
-          packaged build for Authorized Android Enabled Devices, consisting of
-          files suitable for installation on an Authorized Android Enabled
-          Device using a mechanism such as fastboot mode or recovery mode.
-
-   2.  License Grant
-
-      a.  Subject to the terms of this Agreement, Licensor hereby grants to
-          You, free of charge, a non-exclusive, non-sublicensable,
-          non-transferable, limited license, during the term of this Agreement,
-          to download, install and use the Software internally in
-          machine-readable (i.e., object code) form and the Documentation for
-          non-commercial use on an Authorized Android Enabled Device and
-          non-commercial redistribution of the Authorized Android Enabled
-          Device Software (the "Limited Purpose"). You may grant your end users
-          the right to use the Software for the Limited Purpose. The license to
-          the Software granted to You hereunder is solely for the Limited
-          Purpose set forth in this section, and the Software shall not be used
-          for any other purpose.
-
-   3.  Restrictions
-
-      a.  Retention of Rights. The entire right, title and interest in the
-          Software shall remain with Licensor and, unless specified in writing
-          hereunder, no rights are granted to any of the Software. Except for
-          the right to use the Software for the Limited Purpose, the delivery
-          of the Software to You does not convey to You any intellectual
-          property rights in the Software, including, but not limited to any
-          rights under any patent, trademark, copyright, or trade secret.
-          Neither the delivery of the Software to You nor any terms set forth
-          herein shall be construed to grant to You, either expressly, by
-          implication or by way of estoppel, any license under any patents or
-          other intellectual property rights covering or relating to any other
-          product or invention or any combination of the Software with any
-          other product. Any rights not expressly granted to You herein are
-          reserved by Licensor.
-
-      b.  No Commercialization or Distribution of the Software and
-          Documentation. Except as expressly provided in Section 2 of this
-          Agreement, You shall have no right to (i) copy, disclose, distribute,
-          publically perform, publically display, transfer, alter, modify,
-          translate, disassemble, decompile, reverse engineer, or adapt the
-          Software and Documentation, or any portion thereof, or create any
-          derivative works based thereon; (ii) rent, lease, assign, sublicense,
-          resell, disclose or otherwise transfer the Software and Documentation
-          in whole or in part to any third party (iii) use the Software and
-          Documentation except for the Limited Purpose, (iv) remove or alter
-          any of the copyright or proprietary notices contained in any of the
-          Software and Documentation. For the purposes of clarity, nothing in
-          this Agreement prohibits You from making and distributing Android
-          Applications under commercial or non-commercial terms, provided that
-          You shall not contain, incorporate, and/or compile the Software or
-          any of its derivative works, in whole or in part, into Your Android
-          Applications and/or any software/devices created by You or by third
-          parties acting on Your behalf. You and any such third party shall
-          comply with all of the terms and conditions of this Agreement.
-
-      c.  No Reverse Engineering. Except for any portions of the Software
-          provided to You in source code format and except for any third party
-          code distributed with the Software that is licensed under contrary
-          terms, You will not reverse engineer, disassemble,
-          decompile, or translate the Software, or otherwise attempt to derive
-          the source code version of the Software, except if and to the extent
-          expressly permitted under any applicable law.
-
-      d.  Third Party Software. You agree that Android may contain third party
-          software. You agree that you may not distribute such third party
-          software for any purpose without appropriate licenses from the
-          applicable third party or parties.
-
-      e.  No Transfer or Assignment. You shall not assign any of its rights or
-          obligations under this Agreement. Any attempted assignment in
-          contravention of this Section shall be void.
-
-   4.  Indemnity
-
-      a.  You agree to indemnify and hold harmless Licensor and its officers,
-          directors, customers, employees and successors and assigns (each an
-          "Indemnified Party") against any and all claims, demands, causes of
-          action, losses, liabilities, damages, costs and expenses, incurred by
-          the Indemnified Party (including but not limited to costs of defense,
-          investigation and reasonable attorney's fees) arising out of,
-          resulting from or related to (i) any software, products,
-          documentation, content, materials or derivative works created or
-          developed by You using the Software which causes an infringement of
-          any patent, copyright, trademark, trade secret, or other property,
-          publicity or privacy rights of any third parties arising in any
-          jurisdiction anywhere in the world, (ii) the download, distribution,
-          installation, storage, execution, use or transfer of such software,
-          products, documentation, content, materials or derivative works by
-          any person or entity, and/or (iii) any breach of this Agreement by
-          You. If requested by an Indemnified Party, You agree to defend such
-          Indemnified Party in connection with any third party claims, demands,
-          or causes of action resulting from, arising out of or in connection
-          with any of the foregoing.
-
-   5.  Limitation of Liability
-
-      a.  TO THE MAXIMUM EXTENT PERMITTED UNDER APPLICABLE LAWS, UNDER NO
-          CIRCUMSTANCES, INCLUDING WITHOUT LIMITATION NEGLIGENCE, SHALL
-          LICENSOR, ITS AFFILIATES AND/OR ITS DIRECTORS, OFFICERS, EMPLOYEES OR
-          AGENTS BE LIABLE FOR ANY INDIRECT, INCIDENTAL, SPECIAL, PUNITIVE OR
-          CONSEQUENTIAL DAMAGES (INCLUDING BUT NOT LIMITED TO DAMAGES FOR LOSS
-          OF BUSINESS PROFITS, BUSINESS INTERRUPTION, LOSS OF BUSINESS
-          INFORMATION AND THE LIKE) ARISING OUT OF OR IN CONNECTION WITH THE
-          SOFTWARE OR ANY DOWNLOAD, INSTALLATION OR USE OF, OR INABILITY TO
-          USE, THE SOFTWARE, EVEN IF LICENSOR HAS BEEN ADVISED OF THE
-          POSSIBILITY OF SUCH DAMAGES. SOME JURISDICTIONS DO NOT ALLOW THE
-          LIMITATION OR EXCLUSION OF LIABILITY FOR INCIDENTAL OR CONSEQUENTIAL
-          DAMAGES SO THE ABOVE LIMITATION OR EXCLUSION MAY NOT APPLY OR MAY BE
-          LIMITED. IN NO EVENT SHALL LICENSOR'S TOTAL AGGREGATE LIABILITY TO
-          YOU FOR ANY AND ALL DAMAGES, LOSSES, CLAIMS AND CAUSES OF ACTIONS
-          (WHETHER IN CONTRACT, TORT, INCLUDING NEGLIGENCE, INDEMNIFICATION OR
-          OTHERWISE) EXCEED ONE HUNDRED U.S. DOLLARS (US$100). THE LIMITATIONS
-          SET FORTH IN THIS PARAGRAPH SHALL BE DEEMED TO APPLY TO THE MAXIMUM
-          EXTENT PERMITTED BY APPLICABLE LAW. THE PARTIES HAVE FULLY CONSIDERED
-          THE FOREGOING ALLOCATION OF RISK AND FIND IT REASONABLE, AND THAT THE
-          FOREGOING LIMITATIONS IN THIS PARAGRAPH ARE AN ESSENTIAL BASIS OF
-          THE BARGAIN BETWEEN THE PARTIES.
-
-   6.  No Warranty
-
-      a.  LICENSOR MAKES NO WARRANTIES, EXPRESS OR IMPLIED, WITH RESPECT TO THE
-          SOFTWARE AND DOCUMENTATION PROVIDED UNDER THIS AGREEMENT, INCLUDING
-          BUT NOT LIMITED TO ANY WARRANTY OF MERCHANTABILITY OR FITNESS FOR A
-          PARTICULAR PURPOSE OR AGAINST INFRINGEMENT, OR ANY EXPRESS OR IMPLIED
-          WARRANTY ARISING OUT OF TRADE USAGE OR OUT OF A COURSE OF DEALING OR
-          COURSE OF PERFORMANCE. NOTHING CONTAINED IN THIS AGREEMENT SHALL BE
-          CONSTRUED AS A WARRANTY OR REPRESENTATION BY LICENSOR (I) AS TO THE
-          VALIDITY OR SCOPE OF ANY PATENT, COPYRIGHT OR OTHER INTELLECTUAL
-          PROPERTY RIGHT AND (II) THAT ANY MANUFACTURE OR USE WILL BE FREE FROM
-          INFRINGEMENT OF PATENTS, COPYRIGHTS OR OTHER INTELLECTUAL PROPERTY
-          RIGHTS OF OTHERS, AND IT SHALL BE THE SOLE RESPONSIBILITY OF YOU TO
-          MAKE SUCH DETERMINATION AS IS NECESSARY WITH RESPECT TO THE
-          ACQUISITION OF LICENSES UNDER PATENTS AND OTHER INTELLECTUAL PROPERTY
-          OF THIRD PARTIES. LICENSOR SHALL NOT HAVE ANY OBLIGATION TO PROVIDE
-          ANY TECHNICAL SUPPORT OF THE SOFTWARE UNDER THIS AGREEMENT.
-
-   7.  Term and Termination
-
-      a.  This Agreement shall be effective on the date You accept this
-          Agreement and shall remain in effect until terminated as provided
-          herein. You may terminate the Agreement at any time by deleting and
-          destroying all copies of the Software and all related information in
-          Your possession or control. This Agreement terminates immediately and
-          automatically, with or without notice, if You fail to comply with any
-          provision hereof.  Additionally, Licensor may at any time terminate
-          this Agreement, without cause, upon notice to You. Upon termination
-          You must delete or destroy all copies of the Software in Your
-          possession, and the license granted to You in this Agreement shall
-          terminate. Sections 3, 4, 5, 6 and 8 shall survive the termination of
-          this Agreement.
-
-   8.  Miscellaneous
-
-      a.  Governing Law. This Agreement is governed and interpreted in
-          accordance with the laws of the State of California without giving
-          effect to its conflict of laws provisions. The United Nations
-          Convention on Contracts for the International Sale of Goods is
-          expressly disclaimed and shall not apply. Any claim arising out of or
-          related to this Agreement must be brought exclusively in a federal or
-          state court located in Santa Clara County, California and You consent
-          to the jurisdiction and venue of such courts.
-
-      b.  Waiver and Severability. The failure of either party to require
-          performance by the other party of any provision of this Agreement
-          shall not affect the full right to require such performance at any
-          time thereafter; nor shall the waiver by either party of a breach of
-          any provision of this Agreement be taken or held to be a waiver of
-          the provision itself. Severability. If any provision of this
-          Agreement is unenforceable or invalid under any applicable law or is
-          so held by applicable court decision, such unenforceability or
-          invalidity shall not render this Agreement unenforceable or invalid
-          as a whole, and such provision shall be changed and interpreted so as
-          to best accomplish the objectives of such unenforceable or invalid
-          provision within the limits of applicable law or applicable court
-          decisions.
-
-      c.  Amendment and Modification. This Agreement and any of its terms and
-          provisions may only be amended, modified, supplemented or waived in a
-          writing signed by both parties hereto.
-
-      d.  Compliance with Laws. You shall comply with all applicable laws,
-          rules, and regulations in connection with its activities under this
-          Agreement.
-
-      e.  Entire Agreement. This Agreement completely and exclusively states
-          the agreement between You and Licensor regarding this subject matter.
diff --git a/self-extractors/nvidia/staging/Android.mk b/self-extractors/nvidia/staging/Android.mk
deleted file mode 100644
index 8e3bc1a..0000000
--- a/self-extractors/nvidia/staging/Android.mk
+++ /dev/null
@@ -1,31 +0,0 @@
-#
-# Copyright (C) 2011 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-LOCAL_PATH := $(my-dir)
-
-ifeq (stingray,$(TARGET_DEVICE))
-
-include $(CLEAR_VARS)
-
-LOCAL_MODULE_TAGS := optional
-
-LOCAL_SRC_FILES:= \
-	libpkip_mock.c \
-
-LOCAL_MODULE := libpkip
-
-include $(BUILD_SHARED_LIBRARY)
-
-endif
diff --git a/self-extractors/nvidia/staging/BoardConfigStingray.mk b/self-extractors/nvidia/staging/BoardConfigStingray.mk
deleted file mode 100644
index 851a7a8..0000000
--- a/self-extractors/nvidia/staging/BoardConfigStingray.mk
+++ /dev/null
@@ -1,13 +0,0 @@
-# Copyright (C) 2011 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
diff --git a/self-extractors/nvidia/staging/device-stingray.mk b/self-extractors/nvidia/staging/device-stingray.mk
deleted file mode 100644
index 9ec9110..0000000
--- a/self-extractors/nvidia/staging/device-stingray.mk
+++ /dev/null
@@ -1,68 +0,0 @@
-# Copyright (C) 2011 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-LOCAL_PATH := vendor/nvidia/stingray
-
-# NVIDIA blob necessary for stingray hardware
-PRODUCT_COPY_FILES := \
-    $(LOCAL_PATH)/proprietary/nvmm_aacdec.axf:system/etc/firmware/nvmm_aacdec.axf \
-    $(LOCAL_PATH)/proprietary/nvddk_audiofx_core.axf:system/etc/firmware/nvddk_audiofx_core.axf \
-    $(LOCAL_PATH)/proprietary/nvddk_audiofx_transport.axf:system/etc/firmware/nvddk_audiofx_transport.axf \
-    $(LOCAL_PATH)/proprietary/nvmm_adtsdec.axf:system/etc/firmware/nvmm_adtsdec.axf \
-    $(LOCAL_PATH)/proprietary/nvmm_audiomixer.axf:system/etc/firmware/nvmm_audiomixer.axf \
-    $(LOCAL_PATH)/proprietary/nvmm_h264dec.axf:system/etc/firmware/nvmm_h264dec.axf \
-    $(LOCAL_PATH)/proprietary/nvmm_jpegdec.axf:system/etc/firmware/nvmm_jpegdec.axf \
-    $(LOCAL_PATH)/proprietary/nvmm_jpegenc.axf:system/etc/firmware/nvmm_jpegenc.axf \
-    $(LOCAL_PATH)/proprietary/nvmm_manager.axf:system/etc/firmware/nvmm_manager.axf \
-    $(LOCAL_PATH)/proprietary/nvmm_mp2dec.axf:system/etc/firmware/nvmm_mp2dec.axf \
-    $(LOCAL_PATH)/proprietary/nvmm_mp3dec.axf:system/etc/firmware/nvmm_mp3dec.axf \
-    $(LOCAL_PATH)/proprietary/nvmm_mpeg4dec.axf:system/etc/firmware/nvmm_mpeg4dec.axf \
-    $(LOCAL_PATH)/proprietary/nvmm_reference.axf:system/etc/firmware/nvmm_reference.axf \
-    $(LOCAL_PATH)/proprietary/nvmm_service.axf:system/etc/firmware/nvmm_service.axf \
-    $(LOCAL_PATH)/proprietary/nvmm_sorensondec.axf:system/etc/firmware/nvmm_sorensondec.axf \
-    $(LOCAL_PATH)/proprietary/nvmm_sw_mp3dec.axf:system/etc/firmware/nvmm_sw_mp3dec.axf \
-    $(LOCAL_PATH)/proprietary/nvmm_wavdec.axf:system/etc/firmware/nvmm_wavdec.axf \
-    $(LOCAL_PATH)/proprietary/nvrm_avp.bin:system/etc/firmware/nvrm_avp.bin \
-    $(LOCAL_PATH)/proprietary/libEGL_tegra.so:system/lib/egl/libEGL_tegra.so \
-    $(LOCAL_PATH)/proprietary/libGLESv1_CM_tegra.so:system/lib/egl/libGLESv1_CM_tegra.so \
-    $(LOCAL_PATH)/proprietary/libGLESv2_tegra.so:system/lib/egl/libGLESv2_tegra.so \
-    $(LOCAL_PATH)/proprietary/gralloc.tegra.so:system/lib/hw/gralloc.tegra.so \
-    $(LOCAL_PATH)/proprietary/hwcomposer.tegra.so:system/lib/hw/hwcomposer.tegra.so \
-    $(LOCAL_PATH)/proprietary/libcgdrv.so:system/lib/libcgdrv.so \
-    $(LOCAL_PATH)/proprietary/libnvddk_2d.so:system/lib/libnvddk_2d.so \
-    $(LOCAL_PATH)/proprietary/libnvddk_2d_v2.so:system/lib/libnvddk_2d_v2.so \
-    $(LOCAL_PATH)/proprietary/libnvddk_audiofx.so:system/lib/libnvddk_audiofx.so \
-    $(LOCAL_PATH)/proprietary/libnvdispatch_helper.so:system/lib/libnvdispatch_helper.so \
-    $(LOCAL_PATH)/proprietary/libnvdispmgr_d.so:system/lib/libnvdispmgr_d.so \
-    $(LOCAL_PATH)/proprietary/libnvmm.so:system/lib/libnvmm.so \
-    $(LOCAL_PATH)/proprietary/libnvmm_camera.so:system/lib/libnvmm_camera.so \
-    $(LOCAL_PATH)/proprietary/libnvmm_contentpipe.so:system/lib/libnvmm_contentpipe.so \
-    $(LOCAL_PATH)/proprietary/libnvmm_image.so:system/lib/libnvmm_image.so \
-    $(LOCAL_PATH)/proprietary/libnvmm_manager.so:system/lib/libnvmm_manager.so \
-    $(LOCAL_PATH)/proprietary/libnvmm_service.so:system/lib/libnvmm_service.so \
-    $(LOCAL_PATH)/proprietary/libnvmm_tracklist.so:system/lib/libnvmm_tracklist.so \
-    $(LOCAL_PATH)/proprietary/libnvmm_utils.so:system/lib/libnvmm_utils.so \
-    $(LOCAL_PATH)/proprietary/libnvmm_video.so:system/lib/libnvmm_video.so \
-    $(LOCAL_PATH)/proprietary/libnvomx.so:system/lib/libnvomx.so \
-    $(LOCAL_PATH)/proprietary/libnvomxilclient.so:system/lib/libnvomxilclient.so \
-    $(LOCAL_PATH)/proprietary/libnvos.so:system/lib/libnvos.so \
-    $(LOCAL_PATH)/proprietary/libnvrm.so:system/lib/libnvrm.so \
-    $(LOCAL_PATH)/proprietary/libnvrm_channel.so:system/lib/libnvrm_channel.so \
-    $(LOCAL_PATH)/proprietary/libnvrm_graphics.so:system/lib/libnvrm_graphics.so \
-    $(LOCAL_PATH)/proprietary/libnvsm.so:system/lib/libnvsm.so \
-    $(LOCAL_PATH)/proprietary/libnvwsi.so:system/lib/libnvwsi.so \
-    $(LOCAL_PATH)/proprietary/libstagefrighthw.so:system/lib/libstagefrighthw.so
-
-PRODUCT_PACKAGES := \
-    libpkip
diff --git a/self-extractors/nvidia/staging/libpkip_mock.c b/self-extractors/nvidia/staging/libpkip_mock.c
deleted file mode 100644
index 76bd0da..0000000
--- a/self-extractors/nvidia/staging/libpkip_mock.c
+++ /dev/null
@@ -1,18 +0,0 @@
-/*
- * Copyright (C) 2011 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-int PKITP_SYM_ExportProtectedKey() {
-  return 0;
-}
diff --git a/self-extractors/root/BoardConfigVendor.mk b/self-extractors/root/BoardConfigVendor.mk
deleted file mode 100644
index 859309c..0000000
--- a/self-extractors/root/BoardConfigVendor.mk
+++ /dev/null
@@ -1,18 +0,0 @@
-# Copyright (C) 2011 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-LOCAL_STEM := stingray/BoardConfigStingray.mk
-
--include vendor/broadcom/$(LOCAL_STEM)
--include vendor/nvidia/$(LOCAL_STEM)
diff --git a/self-extractors/root/stingray-vendor.mk b/self-extractors/root/stingray-vendor.mk
deleted file mode 100644
index 665c02e..0000000
--- a/self-extractors/root/stingray-vendor.mk
+++ /dev/null
@@ -1,18 +0,0 @@
-# Copyright (C) 2011 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-LOCAL_STEM := stingray/device-stingray.mk
-
-$(call inherit-product-if-exists, vendor/broadcom/$(LOCAL_STEM))
-$(call inherit-product-if-exists, vendor/nvidia/$(LOCAL_STEM))
