diff --git a/nandroid/nandroid-mobile.sh b/nandroid/nandroid-mobile.sh
index b5cae3d..9a9a824 100755
--- a/nandroid/nandroid-mobile.sh
+++ b/nandroid/nandroid-mobile.sh
@@ -1,23 +1,6 @@
 #!/sbin/sh
 
-# nandroid v2.2.2 - an Android backup tool for the G1 by infernix and brainaid
-# restore capability added by cyanogen
-
-# pensive modified to allow to add prefixes to backups, and to restore specific backups
-# pensive added the ability to exclude various images from the restore/backup operations, allows to preserve the newer
-# recovery image if an older backup is being restored or to preserve user data. Also, saves space by not backing up
-# partitions which change rarely.
-# pensive added compressing backups and restoring compressed backups
-# pensive added fetching system updates directly from the web into /sdcard/update.zip
-# pensive added fetching system updates directly from the web into /cache and applying it.
-# pensive added moving *update*.zip from /sdcard/download where a browser puts it to /sdcard/update.zip
-# pensive added deletion of stale backups
-# pensive added backup for ext2 partition on the sdcard to switch roms
-# pensive added composite options --save NAME and --switchto NAME to switch ROMS
-# pensive added list backup anywhere on the sdcard
-# pensive added list updates (more precisely *.zip) anywhere on the sdcard
-# Amon_RA : ext restore -> added check if ext backup is existing
-# Amon_RA : ext restore -> added check if ext parition is existing
+# nandroid v2.1 - an Android backup tool for the G1 by infernix and brainaid
 
 # Requirements:
 
@@ -26,10 +9,6 @@
 # - busybox in recovery mode
 # - dump_image-arm-uclibc compiled and in path on phone
 # - mkyaffs2image-arm-uclibc compiled and installed in path on phone
-# - flash_image-arm-uclibc compiled and in path on phone
-# - unyaffs-arm-uclibc compiled and in path on phone
-# - for [de]compression needs gzip or bzip2, part of the busybox
-# - wget for the wireless updates
 
 # Reference data:
 
@@ -44,7 +23,7 @@
 
 # We don't dump misc or cache because they do not contain any useful data that we are aware of at this time.
 
-# Logical steps (v2.2.1):
+# Logical steps (v2.1):
 #
 # 0.  test for a target dir and the various tools needed, if not found then exit with error.
 # 1.  check "adb devices" for a device in recovery mode. set DEVICEID variable to the device ID. abort when not found.
@@ -76,612 +55,23 @@
 DEVICEID=foo
 RECOVERY=foo
 
-SUBNAME=""
-NORECOVERY=0
-NOBOOT=0
-NODATA=0
-NOSYSTEM=0
-NOMISC=0
-NOCACHE=0
-NOSPLASH1=0
-NOSPLASH2=0
-EXT2=0
-
-COMPRESS=0
-GETUPDATE=0
-RESTORE=0
-BACKUP=0
-DELETE=0
-WEBGET=0
-LISTBACKUP=0
-LISTUPDATE=0
-AUTOREBOOT=0
-AUTOAPPLY=0
-ITSANUPDATE=0
-ITSANIMAGE=0
-WEBGETSOURCE=""
-WEBGETTARGET="/sdcard"
-
-DEFAULTUPDATEPATH="/sdcard/download"
-
-DEFAULTWEBUPDATE=http://n0rp.chemlab.org/android/update-cm-3.6.8.1-signed.zip
-# There really should be a clone link always pointing to the latest
-#DEFAULTWEBUPDATE="http://n0rp.chemlab.org/android/latestupdate-signed.zip"
-DEFAULTWEBIMAGE=http://n0rp.chemlab.org/android/cm-recovery-1.4-signed.zip
-
-# Set up the default (for pensive at least) nameservers
-NAMESERVER1=64.46.128.3
-NAMESERVER2=64.46.128.4
-
-# WiFi works, rmnet0 setup ???
-# Do not know how to start the rmnet0 interface in recovery
-# If in normal mode "ifconfig rmnet0 down" kills rild too
-# /system/bin/rild& exits immediately, todo?
+echo "nandroid-mobile v2.1"
 
 
-DEVICEID=`cat /proc/cmdline | sed "s/.*serialno=//" | cut -d" " -f1`
-
-# This is the default repository for backups
-BACKUPPATH="/sdcard/nandroid/$DEVICEID"
-
-
-# Boot, Cache, Data, Ext2, Misc, Recovery, System, Splash1, Splash2
-# BACKUPLEGEND, If all the partitions are backed up it should be "CBDEMRS12"
-# Enables the user to figure at a glance what is in the backup
-BACKUPLEGEND=""
-
-# Normally we want tar to be verbose for confidence building.
-TARFLAGS="v"
-
-DEFAULTCOMPRESSOR=gzip
-DEFAULTEXT=.gz
-DEFAULTLEVEL="-1"
-
-ASSUMEDEFAULTUSERINPUT=0
-
-echo2log()
-{
-    if [ -e /cache/recovery/log ]; then
-	echo $1 >>/cache/recovery/log
-    else
-	echo $1 >/cache/recovery/log
-    fi
-}
-
-batteryAtLeast()
-{
-                REQUIREDLEVEL=$1
-		ENERGY=`cat /sys/class/power_supply/battery/capacity`
-		if [ "`cat /sys/class/power_supply/battery/status`" == "Charging" ]; then
-			ENERGY=100
-		fi
-		if [ ! $ENERGY -ge $REQUIREDLEVEL ]; then
-			$ECHO "Error: not enough battery power, need at least $REQUIREDLEVEL%."
-			$ECHO "Connect charger or USB power and try again"
-			exit 1
-		fi
-}
-
-if [ "`echo $0 | grep /sbin/nandroid-mobile.sh`" == "" ]; then
-    cp $0 /sbin
-    chmod 755 /sbin/`basename $0`
-    exec /sbin/`basename $0` $@
+if [ "$1" == "" ]; then
+	echo "Usage: $0 {backup|restore} [/path/to/nandroid/backup/]"
+	echo "- backup will store a full system backup on /sdcard/nandroid/$DEVICEID"
+	echo "- restore path will restore the last made backup for boot, system, recovery and data"
+	exit 0
 fi
 
-
-# Hm, have to handle old options for the current UI
 case $1 in
-    restore)
-        shift
-        RESTORE=1
-        ;;
-    backup)
-        shift
-        BACKUP=1
-        ;;
-    --)
-        ;;
-esac
-
-ECHO=echo
-OUTPUT=""
-
-for option in $(getopt --name="nandroid-mobile v2.2.2" -l norecovery -l noboot -l nodata -l nosystem -l nocache -l nomisc -l nosplash1 -l nosplash2 -l subname: -l backup -l restore -l compress -l getupdate -l delete -l path -l webget: -l webgettarget: -l nameserver: -l nameserver2: -l bzip2: -l defaultinput -l autoreboot -l autoapplyupdate -l ext2 -l save: -l switchto: -l listbackup -l listupdate -l silent -l quiet -l help -- "cbruds:p:eql" "$@"); do
-    case $option in
-        --silent)
-            ECHO=echo2log
-            ASSUMEDEFAULTUSERINPUT=1
-            TARFLAGS=""
-            OUTPUT=>>/cache/recovery/log
-            shift
-            ;;
-        --quiet)
-            ECHO=echo2log
-            ASSUMEDEFAULTUSERINPUT=1
-            TARFLAGS=""
-            OUTPUT=>>/cache/recovery/log
-            shift
-            ;;
-        -q)
-            ECHO=echo2log
-            ASSUMEDEFAULTUSERINPUT=1
-            TARFLAGS=""
-            OUTPUT=>>/cache/recovery/log
-            shift
-            ;;
-        --help)
-            ECHO=echo
-            $ECHO "Usage: $0 {--backup|--restore|--getupdate|--delete|--compress|--bzip2:ARG|--webget:URL|--listbackup|--listupdate} [options]"
-            $ECHO ""
-            $ECHO "--help                     Display this help"
-            $ECHO ""
-            $ECHO "-s | --subname: SUBSTRING  In case of --backup the SUBSTRING is"
-            $ECHO "                           the prefix used with backup name"
-            $ECHO "                           in case of --restore or -c|--compress|--bzip2 or"
-            $ECHO "                           --delete SUBSTRING specifies backups on which to"
-            $ECHO "                           operate"
-            $ECHO ""
-            $ECHO "-u | --getupdate           Will search /sdcard/download for files named"
-            $ECHO "                           *update*.zip, will prompt the user"
-            $ECHO "                           to narrow the choice if more than one is found,"
-            $ECHO "                           and then move the latest, if not unique,"
-            $ECHO "                           to sdcard root /sdcard with the update.zip name"
-            $ECHO "                           It is assumed the browser was used to put the *.zip"
-            $ECHO "                           in the /sdcard/download folder. -p|--path option"
-            $ECHO "                           would override /sdcard/download with the path of your"
-            $ECHO "                           choosing."
-            $ECHO ""
-            $ECHO "-p | --path DIR            Requires an ARGUMENT, which is the path to where "
-            $ECHO "                           the backups are stored, can be used"
-            $ECHO "                           when the default path /sdcard/nandroid/$DEVICEID "
-            $ECHO "                           needs to be changed"
-            $ECHO ""
-            $ECHO "-b | --backup              Will store a full system backup on $BACKUPPATH"
-            $ECHO "                           One can suppress backup of any image however with options"
-            $ECHO "                           starting with --no[partionname]"
-            $ECHO ""
-            $ECHO "-e | --ext2                Preserve the contents of the ext2 partition along with"
-            $ECHO "                           the other partitions being backed up, to easily switch roms."
-            $ECHO ""
-            $ECHO "-r | --restore             Will restore the last made backup which matches --subname"
-            $ECHO "                           ARGUMENT for boot, system, recovery and data"
-            $ECHO "                           unless suppressed by other options"
-            $ECHO "                           if no --subname is supplied and the user fails to"
-            $ECHO "                           provide any input then the latest backup is used"
-            $ECHO "                           When restoring compressed backups, the images will remain"
-            $ECHO "                           decompressed after the restore, you need to use -c|-compress"
-            $ECHO "                           or --bzip2 to compress the backup again"
-            $ECHO ""
-            $ECHO "-d | --delete              Will remove backups whose names match --subname ARGUMENT"
-            $ECHO "                           Will allow to narrow down, will ask if the user is certain."
-            $ECHO "                           Removes one backup at a time, repeat to remove multiple backups"
-            $ECHO ""
-            $ECHO "-c | --compress            Will operate on chosen backups to compress image files,"
-            $ECHO "                           resulting in saving of about 40MB out of 90+mb,"
-            $ECHO "                           i.e. up to 20 backups can be stored in 1 GIG, if this "
-            $ECHO "                           option is turned on with --backup, the resulting backup will"
-            $ECHO "                           be compressed, no effect if restoring since restore will"
-            $ECHO "                           automatically uncompress compressed images if space is available"
-            $ECHO ""
-            $ECHO "--bzip2: -#                Turns on -c|--compress and uses bzip2 for compression instead"
-            $ECHO "                           of gzip, requires an ARG -[1-9] compression level"
-            $ECHO ""
-            $ECHO "--webget: URL|\"\"         Requires an argument, a valid URL for an *update*.zip file"
-            $ECHO "                           If a null string is passed then the default URL is used"
-            $ECHO "                           Will also create an update.MD5sum file and update.name with the"
-            $ECHO "                           original file name."
-            $ECHO ""
-            $ECHO "--nameserver: IP addr      Provide the first nameserver IP address, to override the default"
-            $ECHO ""
-            $ECHO "--nameserver2: IP addr     Provide the second nameserver IP address, to override the default"
-            $ECHO ""
-            $ECHO "--webgettarget: DIR        Target directory to deposit the fetched update, default is"
-            $ECHO "                           /sdcard"
-            $ECHO ""
-            $ECHO "--norecovery               Will suppress restore/backup of the recovery partition"
-            $ECHO "                           If recovery.img was not part of the backup, no need to use this"
-            $ECHO "                           option as the nandroid will not attempt to restore it, same goes"
-            $ECHO "                           for all the options below"
-            $ECHO ""
-            $ECHO "--noboot                   Will suppress restore/backup of the boot partition"
-            $ECHO ""
-            $ECHO "--nodata                   Will suppress restore/backup of the data partition"
-            $ECHO ""
-            $ECHO "--nosystem                 Will suppress restore/backup of the system partition"
-            $ECHO ""
-            $ECHO "--nocache                  Will suppress restore/backup of the cache partition"
-            $ECHO ""
-            $ECHO "--nomisc                   Will suppress restore/backup of the misc partition"
-            $ECHO ""
-            $ECHO "--nosplash1                Will suppress restore/backup of the splash1 partition"
-            $ECHO ""
-            $ECHO "--nosplash2                Will suppress restore/backup of the splash2 partition"
-            $ECHO ""
-            $ECHO "--defaultinput             Makes nandroid-mobile non-interactive, assumes default"
-            $ECHO "                           inputs from the user."
-            $ECHO ""
-            $ECHO "--autoreboot               Automatically reboot the phone after a backup, especially"
-            $ECHO "                           useful when the compression options are on -c|--compress| "
-            $ECHO "                           --bzip2 -level since the compression op takes time and"
-            $ECHO "                           you may want to go to sleep or do something else, and"
-            $ECHO "                           when a backup is over you want the calls and mms coming"
-            $ECHO "                           through, right?"
-            $ECHO ""
-            $ECHO "--autoapplyupdate          Once the specific update is downloaded or chosen from the"
-            $ECHO "                           sdcard, apply it immediately. This option is valid as a "
-            $ECHO "                           modifier for either --webget or --getupdate options."
-            $ECHO ""
-            $ECHO "-e|--ext2                  Save the contents of ext2 partition in the backup folder too."
-            $ECHO "                           Enables to keep different sets of apps for different ROMS and"
-            $ECHO "                           switch easily between them."
-            $ECHO ""
-            $ECHO "--save: ROMTAG             Preserve EVERYTHING under ROMTAG name, a composite option,"
-            $ECHO "                           it uses several other options."
-            $ECHO ""
-            $ECHO "--switchto: ROMTAG         Restores your entire environment including app2sd apps, cache"
-            $ECHO "                           to the ROM environment named ROMTAG."
-            $ECHO ""
-            $ECHO "-q|--quiet|--silent        Direct all the output to the recovery log, and assume default"
-            $ECHO "                           user inputs."
-            $ECHO ""
-            $ECHO "-l|--listbackup            Will search the entire SDCARD for backup folders and will dump"
-            $ECHO "                           the list to stdout for use by the UI. Should be run with --silent"
-            $ECHO ""
-            $ECHO "--listupdate               Will search the entire SDCARD for updates and will dump"
-            $ECHO "                           the list to stdout for use by the UI. Should be run with --silent"
-            exit 0
-            ;;
-        --norecovery)
-            NORECOVERY=1
-            #$ECHO "No recovery"
-            shift
-            ;;
-        --noboot)
-            NOBOOT=1
-            #$ECHO "No boot"
-            shift
-            ;;
-        --nodata)
-            NODATA=1
-            #$ECHO "No data"
-            shift
-            ;;
-        --nosystem)
-            NOSYSTEM=1
-            #$ECHO "No system"
-            shift
-            ;;
-        --nocache)
-            NOCACHE=1
-            #$ECHO "No cache"
-            shift
-            ;;
-        --nomisc)
-            NOMISC=1
-            #$ECHO "No misc"
-            shift
-            ;;
-        --nosplash1)
-            NOSPLASH1=1
-            #$ECHO "No splash1"
-            shift
-            ;;
-        --nosplash2)
-            NOSPLASH2=1
-            #$ECHO "No splash2"
-            shift
-            ;;
-        --backup)
-            BACKUP=1
-            #$ECHO "backup"
-            shift
-            ;;
-        -b)
-            BACKUP=1
-            #$ECHO "backup"
-            shift
-            ;;
-        -e)
-            EXT2=1
-            shift
-            ;;
-        --ext2)
-            EXT2=1
-            shift
-            ;;
-        --restore)
-            RESTORE=1
-            #$ECHO "restore"
-            shift
-            ;;
-        -r)
-            RESTORE=1
-            #$ECHO "restore"
-            shift
-            ;;
-        --compress)
-            COMPRESS=1
-            #$ECHO "Compress"
-            shift
-            ;;
-        -c)
-            COMPRESS=1
-            #$ECHO "Compress"
-            shift
-            ;;
-        --bzip2)
-            COMPRESS=1
-            DEFAULTCOMPRESSOR=bzip2
-            DEFAULTEXT=.bz2
-            if [ "$2" == "$option" ]; then
-                shift
-            fi
-            DEFAULTLEVEL="$2"
-            shift
-            ;;
-        --getupdate)
-            GETUPDATE=1
-            shift
-            ;;
-        -u)
-            GETUPDATE=1
-            shift
-            ;;
-        --subname)
-            if [ "$2" == "$option" ]; then
-                shift
-            fi
-            #$ECHO $2
-            SUBNAME="$2"
-            shift
-            ;;
-        -s)
-            if [ "$2" == "$option" ]; then
-                shift
-            fi
-            #$ECHO $2
-            SUBNAME="$2"
-            shift
-            ;;
-        --path)
-            if [ "$2" == "$option" ]; then
-                shift
-            fi
-            #$ECHO $2
-            BACKUPPATH="$2"
-            DEFAULTUPDATEPATH="$2"
-            shift 2
-            ;;
-        -p)
-            if [ "$2" == "$option" ]; then
-                shift
-            fi
-            #$ECHO $2
-            BACKUPPATH="$2"
-            shift 2
-            ;;
-        --delete)
-            DELETE=1
-            shift
-            ;;
-        -d)
-            DELETE=1
-            shift
-            ;;
-        --webgettarget)
-            if [ "$2" == "$option" ]; then
-                shift
-            fi
-            WEBGETTARGET="$2"
-            shift
-            ;;
-        --webget)
-            if [ "$2" == "$option" ]; then
-                shift
-            fi
-            #$ECHO "WEBGET"
-            # if the argument is "" stick with the default: /sdcard
-            if [ ! "$2" == "" ]; then
-                WEBGETSOURCE="$2"
-            fi
-            WEBGET=1
-            shift
-            ;;
-        --nameserver)
-            if [ "$2" == "$option" ]; then
-                shift
-            fi
-            NAMESERVER1="$2"
-            shift
-            ;;
-        --nameserver2)
-            if [ "$2" == "$option" ]; then
-                shift
-            fi
-            NAMESERVER2="$2"
-            shift
-            ;;
-        --defaultinput)
-            ASSUMEDEFAULTUSERINPUT=1
-            shift
-            ;;
-        --autoreboot)
-            AUTOREBOOT=1
-            shift
-            ;;
-        --autoapplyupdate)
-            AUTOAPPLY=1
-            shift
-            ;;
-        --save)
-            if [ "$2" == "$option" ]; then
-                shift
-            fi
-            SUBNAME="$2"
-            BACKUP=1
-            ASSUMEDEFAULTUSERINPUT=1
-            EXT2=1
-            COMPRESS=1
-            shift
-            ;;
-        --switchto)
-            if [ "$2" == "$option" ]; then
-                shift
-            fi
-            SUBNAME="$2"
-            RESTORE=1
-            ASSUMEDEFAULTUSERINPUT=1
-            EXT2=1
-            shift
-            ;;
-        -l)
-            shift
-            LISTBACKUP=1
-            ;;
-        --listbackup)
-            shift
-            LISTBACKUP=1
-            ;;
-        --listupdate)
-            shift
-            LISTUPDATE=1
-            ;;
-        --)
-            shift
-            break
-            ;;
-    esac
-done
-
-$ECHO ""
-$ECHO "nandroid-mobile v2.2.1"
-$ECHO ""
-
-let OPS=$BACKUP
-let OPS=$OPS+$RESTORE
-let OPS=$OPS+$DELETE
-let OPS=$OPS+$WEBGET
-let OPS=$OPS+$GETUPDATE
-let OPS=$OPS+$LISTBACKUP
-let OPS=$OPS+$LISTUPDATE
-
-if [ "$OPS" -ge 2 ]; then
-    ECHO=echo
-    $ECHO "--backup, --restore, --delete, --webget, --getupdate, --listbackup, --listupdate  are mutually exclusive operations."
-    $ECHO "Please, choose one and only one option!"
-    $ECHO "Aborting."
-    exit 1
-fi
-
-let OPS=$OPS+$COMPRESS
-
-if [ "$OPS" -lt 1 ]; then
-    ECHO=echo
-    $ECHO "Usage: $0 {-b|--backup|-r|--restore|-d|--delete|-u|--getupdate|--webget|-c|--compress|--bzip2 -level|-l|--listbackup|--listupdate} [options]"
-    $ECHO "At least one operation must be defined, try $0 --help for more information."
-    exit 0
-fi
-
-
-if [ "$LISTBACKUP" == 1 ]; then
-    umount /sdcard 2>/dev/null
-    mount /sdcard 2>/dev/null
-    CHECK=`mount | grep /sdcard`
-    if [ "$CHECK" == "" ]; then
-        echo "Error: sdcard not mounted, aborting."
-        exit 1
-    else
-        find /sdcard | grep nandroid.md5 | sed s/.gz//g | sed s/.bz2//g | sed s/nandroid.md5//g
-        umount /sdcard 2>/dev/null
-        exit 0
-    fi
-fi
-
-if [ "$LISTUPDATE" == 1 ]; then
-    umount /sdcard 2>/dev/null
-    mount /sdcard 2>/dev/null
-    CHECK=`mount | grep /sdcard`
-    if [ "$CHECK" == "" ]; then
-        echo "Error: sdcard not mounted, aborting."
-        exit 1
-    else
-        find /sdcard | grep .zip
-        umount /sdcard 2>/dev/null
-        exit 0
-    fi
-fi
-
-# Make sure it exists
-touch /cache/recovery/log
-
-
-if [ "$AUTOAPPLY" == 1 -a "$WEBGET" == 0 -a "$GETUPDATE" == 0 ]; then
-    ECHO=echo
-    $ECHO "The --autoapplyupdate option is valid only in conjunction with --webget or --getupdate."
-    $ECHO "Aborting."
-    exit 1
-fi
-
-if [ "$COMPRESS" == 1 ]; then
-    $ECHO "Compressing with $DEFAULTCOMPRESSOR, level $DEFAULTLEVEL"
-fi
-
-if [ "$WEBGET" == 1 ]; then
-    $ECHO "Fetching $WEBGETSOURCE to target folder: $WEBGETTARGET"
-fi
-
-if [ ! "$SUBNAME" == "" ]; then
-    if [ "$BACKUP" == 1 ]; then
-        if [ "$COMPRESS" == 1 ]; then
-            $ECHO "Using $SUBNAME- prefix to create a compressed backup folder"
-        else
-            $ECHO "Using $SUBNAME- prefix to create a backup folder"
-        fi
-    else
-        if [ "$RESTORE" == 1 -o "$DELETE" == 1 -o "$COMPRESS" == 1 ]; then
-            $ECHO "Searching for backup directories, matching $SUBNAME, to delete or restore"
-            $ECHO "or compress"
-            $ECHO ""
-        fi
-    fi
-else
-    if [ "$BACKUP" == 1 ]; then
-        $ECHO "Using G1 keyboard, enter a prefix substring and then <CR>"
-        $ECHO -n "or just <CR> to accept default: "
-        if [ "$ASSUMEDEFAULTUSERINPUT" == 0 ]; then
-            read SUBNAME
-        else
-            $ECHO "Accepting default."
-        fi
-        $ECHO ""
-        if [ "$COMPRESS" == 1 ]; then
-            $ECHO "Using $SUBNAME- prefix to create a compressed backup folder"
-        else
-            $ECHO "Using $SUBNAME- prefix to create a backup folder"
-        fi
-        $ECHO ""
-    else
-        if [ "$RESTORE" == 1 -o "$DELETE" == 1 -o "$COMPRESS" == 1 ]; then
-            $ECHO "Using G1 keyboard, enter a directory name substring and then <CR>"
-            $ECHO -n "to find matches or just <CR> to accept default: "
-            if [ "$ASSUMEDEFAULTUSERINPUT" == 0 ]; then
-                read SUBNAME
-            else
-                $ECHO "Accepting default."
-            fi
-            $ECHO ""
-            $ECHO "Using $SUBNAME string to search for matching backup directories"
-            $ECHO ""
-        fi
-    fi
-fi
-
-if [ "$BACKUP" == 1 ]; then
+	backup)
 		mkyaffs2image=`which mkyaffs2image`
 		if [ "$mkyaffs2image" == "" ]; then
 			mkyaffs2image=`which mkyaffs2image-arm-uclibc`
 			if [ "$mkyaffs2image" == "" ]; then
-				$ECHO "error: mkyaffs2image or mkyaffs2image-arm-uclibc not found in path"
+				echo "error: mkyaffs2image or mkyaffs2image-arm-uclibc not found in path"
 				exit 1
 			fi
 		fi
@@ -689,331 +79,100 @@
 		if [ "$dump_image" == "" ]; then
 			dump_image=`which dump_image-arm-uclibc`
 			if [ "$dump_image" == "" ]; then
-				$ECHO "error: dump_image or dump_image-arm-uclibc not found in path"
+				echo "error: dump_image or dump_image-arm-uclibc not found in path"
 				exit 1
 			fi
 		fi
-fi
-
-if [ "$RESTORE" == 1 ]; then
+		break
+		;;
+	restore)
 		flash_image=`which flash_image`
 		if [ "$flash_image" == "" ]; then
 			flash_image=`which flash_image-arm-uclibc`
 			if [ "$flash_image" == "" ]; then
-				$ECHO "error: flash_image or flash_image-arm-uclibc not found in path"
+				echo "error: flash_image or flash_image-arm-uclibc not found in path"
 				exit 1
 			fi
 		fi
-		unyaffs=`which unyaffs`
-		if [ "$unyaffs" == "" ]; then
-			unyaffs=`which unyaffs-arm-uclibc`
-			if [ "$unyaffs" == "" ]; then
-				$ECHO "error: unyaffs or unyaffs-arm-uclibc not found in path"
-				exit 1
-			fi
-		fi
-fi
-if [ "$COMPRESS" == 1 ]; then
-                compressor=`busybox | grep $DEFAULTCOMPRESSOR`
-                if [ "$compressor" == "" ]; then
-                    $ECHO "Warning: busybox/$DEFAULTCOMPRESSOR is not found"
-                    $ECHO "No compression operations will be performed"
-                    COMPRESS=0
-                else
-                    $ECHO "Found $DEFAULTCOMPRESSOR, will compress the backup"
-                fi
-fi
+		break
+		;;
+esac
 
 # 1
 DEVICEID=`cat /proc/cmdline | sed "s/.*serialno=//" | cut -d" " -f1`
 RECOVERY=`cat /proc/cmdline | grep "androidboot.mode=recovery"`
 if [ "$RECOVERY" == "foo" ]; then
-	$ECHO "Error: Must be in recovery mode, aborting"
+	echo "error: not running in recovery mode, aborting"
 	exit 1
 fi
 if [ "$DEVICEID" == "foo" ]; then
-	$ECHO "Error: device id not found in /proc/cmdline, aborting"
+	echo "error: device id not found in /proc/cmdline, aborting"
 	exit 1
 fi
 if [ ! "`id -u 2>/dev/null`" == "0" ]; then
 	if [ "`whoami 2>&1 | grep 'uid 0'`" == "" ]; then
-		$ECHO "Error: must run as root, aborting"
+		echo "error: must run as root, aborting"
 		exit 1
 	fi
 fi
 
 
-if [ "$RESTORE" == 1 ]; then
-                batteryAtLeast 30
-#		ENERGY=`cat /sys/class/power_supply/battery/capacity`
-#		if [ "`cat /sys/class/power_supply/battery/status`" == "Charging" ]; then
-#			ENERGY=100
-#		fi
-#		if [ ! $ENERGY -ge 30 ]; then
-#			$ECHO "Error: not enough battery power"
-#			$ECHO "Connect charger or USB power and try again"
-#			exit 1
-#		fi
-
-
-                umount /sdcard 2>/dev/null
-		mount /sdcard 2>/dev/null
-		if [ "`mount | grep sdcard`" == "" ]; then
-			$ECHO "error: unable to mount /sdcard, aborting"
+case $1 in
+	restore)
+		ENERGY=`cat /sys/class/power_supply/battery/capacity`
+		if [ "`cat /sys/class/power_supply/battery/status`" == "Charging" ]; then
+			ENERGY=100
+		fi
+		if [ ! $ENERGY -ge 30 ]; then
+			echo "Error: not enough battery power"
+			echo "Connect charger or USB power and try again"
 			exit 1
 		fi
-
-		# find the latest backup, but show the user other options
-                $ECHO ""
-                $ECHO "Looking for the latest backup, will display other choices!"
-                $ECHO ""
-
-		RESTOREPATH=`ls -trd $BACKUPPATH/*$SUBNAME* 2>/dev/null | tail -1`
-                $ECHO " "
-
-		if [ "$RESTOREPATH" = "" ];
-		then
-			$ECHO "Error: no backups found"
-			exit 2
-		else
-                        $ECHO "Default backup is the latest: $RESTOREPATH"
-                        $ECHO ""
-                        $ECHO "Other available backups are: "
-                        $ECHO ""
-                        ls -trd $BACKUPPATH/*$SUBNAME* 2>/dev/null | grep -v $RESTOREPATH $OUTPUT
-                        $ECHO ""
-                        $ECHO "Using G1 keyboard, enter a unique name substring to change it and <CR>"
-                        $ECHO -n "or just <CR> to accept: "
-                        if [ "$ASSUMEDEFAULTUSERINPUT" == 0 ]; then
-                            read SUBSTRING
-                        else
-                            $ECHO "Accepting default."
-                            SUBSTRING=""
-                        fi
-                        $ECHO ""
-
-                        if [ ! "$SUBSTRING" == "" ]; then
-                            RESTOREPATH=`ls -trd $BACKUPPATH/*$SUBNAME* 2>/dev/null | grep $SUBSTRING | tail -1`
-                        else
-                            RESTOREPATH=`ls -trd $BACKUPPATH/*$SUBNAME* 2>/dev/null | tail -1`
-                        fi
-                        if [ "$RESTOREPATH" = "" ]; then
-                               $ECHO "Error: no matching backups found, aborting"
-                               exit 2
-                        fi
-		fi
-		
-		$ECHO "Restore path: $RESTOREPATH"
-                $ECHO ""
-
-                umount /system /data 2>/dev/null
-		mount /system 2>/dev/null
-		mount /data 2>/dev/null
-		if [ "`mount | grep data`" == "" ]; then
-			$ECHO "error: unable to mount /data, aborting"	
+		RESTOREPATH=$2
+		if [ ! -f $RESTOREPATH/nandroid.md5 ]; then
+			echo "error: $RESTOREPATH/nandroid.md5 not found, cannot verify backup data"
 			exit 1
 		fi
-		if [ "`mount | grep system`" == "" ]; then
-			$ECHO "error: unable to mount /system, aborting"	
+		umount /system 2>/dev/null
+		umount /data 2>/dev/null
+		if [ ! "`mount | grep data`" == "" ]; then
+			echo "error: unable to umount /data, aborting"	
+			exit 1
+		fi
+		if [ ! "`mount | grep system`" == "" ]; then
+			echo "error: unable to umount /system, aborting"	
 			exit 1
 		fi
 		
+		echo "Verifying backup images..."
 		CWD=$PWD
 		cd $RESTOREPATH
-
-                DEFAULTEXT=""
-                if [ `ls *.bz2 2>/dev/null|wc -l` -ge 1 ]; then
-                    DEFAULTCOMPRESSOR=bzip2
-                    DEFAULTDECOMPRESSOR=bunzip2
-                    DEFAULTEXT=.bz2
-                fi
-                if [ `ls *.gz 2>/dev/null|wc -l` -ge 1 ]; then
-                    DEFAULTCOMPRESSOR=gzip
-                    DEFAULTDECOMPRESSOR=gunzip
-                    DEFAULTEXT=.gz
-                fi
-
-		if [ ! -f $RESTOREPATH/nandroid.md5$DEFAULTEXT ]; then
-			$ECHO "error: $RESTOREPATH/nandroid.md5 not found, cannot verify backup data"
-			exit 1
-		fi
-
-                if [ `ls *.bz2 2>/dev/null|wc -l` -ge 1 -o `ls *.gz 2>/dev/null|wc -l` -ge 1 ]; then
-                    $ECHO "This backup is compressed with $DEFAULTCOMPRESSOR."
-
-                    # Make sure that $DEFAULT[DE]COMPRESSOR exists
-                    if [ `busybox | grep $DEFAULTCOMPRESSOR | wc -l` -le 0 -a\
-                            `busybox | grep $DEFAULTDECOMPRESSOR | wc -l` -le 0 ]; then
-
-                        $ECHO "You do not have either the $DEFAULTCOMPRESSOR or the $DEFAULTDECOMPRESSOR"
-                        $ECHO "to unpack this backup, cleaning up and aborting!"
-                        umount /system 2>/dev/null
-                        umount /data 2>/dev/null
-                        umount /sdcard 2>/dev/null
-                        exit 1
-                    fi
-                    $ECHO "Checking free space /sdcard for the decompression operation."
-                    FREEBLOCKS="`df -k /sdcard| grep sdcard | awk '{ print $4 }'`"
-                    # we need about 100MB for gzip to uncompress the files
-                    if [ $FREEBLOCKS -le 100000 ]; then
-                        $ECHO "Error: not enough free space available on sdcard (need about 100mb)"
-                        $ECHO "to perform restore from the compressed images, aborting."
-                        umount /system 2>/dev/null
-                        umount /data 2>/dev/null
-                        umount /sdcard 2>/dev/null
-                        exit 1
-                    fi
-                    $ECHO "Decompressing images, please wait...."
-                    $ECHO ""
-                    # Starting from the largest while we still have more space to reduce
-                    # space requirements
-                    $DEFAULTCOMPRESSOR -d `ls -S *$DEFAULTEXT`
-                    $ECHO "Backup images decompressed"
-                    $ECHO ""
-                fi
-
-		$ECHO "Verifying backup images..."
 		md5sum -c nandroid.md5
 		if [ $? -eq 1 ]; then
-			$ECHO "Error: md5sum mismatch, aborting"
+			echo "error: md5sum mismatch, aborting"
 			exit 1
 		fi
-
-                if [ `ls boot* 2>/dev/null | wc -l` == 0 ]; then
-                    NOBOOT=1
-                fi
-                if [ `ls recovery* 2>/dev/null | wc -l` == 0 ]; then
-                    NORECOVERY=1
-                fi
-                if [ `ls data* 2>/dev/null | wc -l` == 0 ]; then
-                    NODATA=1
-                fi
-                if [ `ls system* 2>/dev/null | wc -l` == 0 ]; then
-                    NOSYSTEM=1
-                fi
-		# Amon_RA : If there's no ext backup set EXT2 to 0 so ext2 restore doesn't start                
-		if [ `ls ext2* 2>/dev/null | wc -l` == 0 ]; then
-                    EXT2=0
-                fi
-
 		for image in boot recovery; do
-                    if [ "$NOBOOT" == "1" -a "$image" == "boot" ]; then
-                        $ECHO ""
-                        $ECHO "Not flashing boot image!"
-                        $ECHO ""
-                        continue
-                    fi
-                    if [ "$NORECOVERY" == "1" -a "$image" == "recovery" ]; then
-                        $ECHO ""
-                        $ECHO "Not flashing recovery image!"
-                        $ECHO ""
-                        continue
-                    fi
-                    $ECHO "Flashing $image..."
-		    $flash_image $image $image.img $OUTPUT
-                done
-
-		for image in data system; do
-                        if [ "$NODATA" == "1" -a "$image" == "data" ]; then
-                            $ECHO ""
-                            $ECHO "Not restoring data image!"
-                            $ECHO ""
-                            continue
-                        fi
-                        if [ "$NOSYSTEM" == "1" -a "$image" == "system" ]; then
-                            $ECHO ""
-                            $ECHO "Not restoring system image!"
-                            $ECHO ""
-                            continue
-                        fi
-			$ECHO "Erasing /$image..."
-			cd /$image
-			rm -rf * 2>/dev/null
-			$ECHO "Unpacking $image image..."
-			$unyaffs $RESTOREPATH/$image.img $OUTPUT
-			cd /
-			sync
-			umount /$image
+			echo "Flashing $image..."
+			$flash_image $image $image.img
 		done
-
-                if [ "$EXT2" == 1 ]; then
-			# Amon_RA : Check if there's an ext partition before starting to restore    		
-			if [ -e /dev/block/mmcblk0p2 ]; then
-	                    $ECHO "Restoring the ext2 contents."
-	                    CWD=`pwd`
-	                    cd /
-
-	                    if [ `mount | grep /system | wc -l` == 0 ]; then
-	                        mount /system
-	                    else
-	                        mount -o rw,remount /system
-	                    fi
-
-	                    if [ `mount | grep /system/sd | wc -l` == 0 ]; then
-	                        mount /system/sd
-	                    fi
-
-	                    cd $CWD
-	                    CHECK=`mount | grep /system/sd`
-
-	                    if [ "$CHECK" == "" ]; then
-	                        $ECHO "Warning: --ext2 specified but unable to mount the ext2 partition."
-	                        $ECHO "Warning: your phone may be in an inconsistent state on reboot."
-	                        exit 1
-	                    else
-	                        CWD=`pwd`
-	                        cd /system/sd
-	                        # Depending on whether the ext2 backup is compressed we do either or.
-	                        if [ -e $RESTOREPATH/ext2.tar ]; then 
-	                            rm -rf * 2>/dev/null
-	                            tar -x$TARFLAGS -f $RESTOREPATH/ext2.tar
-	                        else
-	                            if [ -e $RESTOREPATH/ext2.tgz ]; then
-	                                rm -rf * 2>/dev/null
-	                                tar -x$TARFLAGS -zf $RESTOREPATH/ext2.tgz
-	                            else
-	                                if [ -e $RESTOREPATH/ext2.tar.bz2 ]; then
-	                                    rm -rf * 2>/dev/null
-	                                    tar -x$TARFLAGS -jf $RESTOREPATH/ext2.tar.bz2
-	                                else
-	                                    $ECHO "Warning: --ext2 specified but cannot find the ext2 backup."
-	                                    $ECHO "Warning: your phone may be in an inconsistent state on reboot."
-	                                fi
-	                            fi
-	                        fi
-	                        cd $CWD
-	                        sync
-	                        umount /system/sd
-	                        umount /system
-	
-	                    fi
-			else
-	                        # Amon_RA : Just display a warning
-				$ECHO "Warning: --ext2 specified but ext2 partition present on sdcard"
-	                        $ECHO "Warning: your phone may be in an inconsistent state on reboot."     
-                	fi
-		fi
-		$ECHO "Restore done"
+		echo "Flashing system and data not currently supported"
+		echo "Restore done"
 		exit 0
-fi
+		;;
+	backup)
+		break
+		;;
+	*)
+		echo "Usage: $0 {backup|restore} [/path/to/nandroid/backup/]"
+		echo "- backup will store a full system backup on /sdcard/nandroid/$DEVICEID"
+		echo "- restore path will restore the last made backup for boot, system, recovery and data"
+		exit 1
+		;;
+esac
 
 # 2.
-if [ "$BACKUP" == 1 ]; then
-
-    if [ "$COMPRESS" == 1 ]; then
-        ENERGY=`cat /sys/class/power_supply/battery/capacity`
-        if [ "`cat /sys/class/power_supply/battery/status`" == "Charging" ]; then
-            ENERGY=100
-        fi
-        if [ ! $ENERGY -ge 30 ]; then
-            $ECHO "Warning: Not enough battery power to perform compression."
-            COMPRESS=0
-            $ECHO "Turning off compression option, you can compress the backup later"
-            $ECHO "with the compression options."
-        fi
-    fi
-
-$ECHO "mounting system and data read-only, sdcard read-write"
+echo "mounting system and data read-only, sdcard read-write"
 umount /system 2>/dev/null
 umount /data 2>/dev/null
 umount /sdcard 2>/dev/null
@@ -1021,61 +180,17 @@
 mount -o ro /data || FAIL=2
 mount /sdcard || mount /dev/block/mmcblk0 /sdcard || FAIL=3
 case $FAIL in
-	1) $ECHO "Error mounting system read-only"; umount /system /data /sdcard; exit 1;;
-	2) $ECHO "Error mounting data read-only"; umount /system /data /sdcard; exit 1;;
-	3) $ECHO "Error mounting sdcard read-write"; umount /system /data /sdcard; exit 1;;
+	1) echo "Error mounting system read-only"; umount /system /data /sdcard; exit 1;;
+	2) echo "Error mounting data read-only"; umount /system /data /sdcard; exit 1;;
+	3) echo "Error mounting sdcard read-write"; umount /system /data /sdcard; exit 1;;
 esac
 
-if [ ! "$SUBNAME" == "" ]; then
-    SUBNAME=$SUBNAME-
-fi
-
-# Identify the backup with what partitions have been backed up
-if [ "$NOBOOT" == 0 ]; then
-    BACKUPLEGEND=$BACKUPLEGEND"B"
-fi
-if [ "$NOCACHE" == 0 ]; then
-    BACKUPLEGEND=$BACKUPLEGEND"C"
-fi
-if [ "$NODATA" == 0 ]; then
-    BACKUPLEGEND=$BACKUPLEGEND"D"
-fi
-if [ "$EXT2" == 1 ]; then
-    BACKUPLEGEND=$BACKUPLEGEND"E"
-fi
-if [ "$NOMISC" == 0 ]; then
-    BACKUPLEGEND=$BACKUPLEGEND"M"
-fi
-if [ "$NORECOVERY" == 0 ]; then
-    BACKUPLEGEND=$BACKUPLEGEND"R"
-fi
-if [ "$NOSYSTEM" == 0 ]; then
-    BACKUPLEGEND=$BACKUPLEGEND"S"
-fi
-
-if [ ! -e /dev/mtd/mtd6ro ]; then
-    NOSPLASH1=1
-    NOSPLASH2=1
-fi
-
-if [ "$NOSPLASH1" == 0 ]; then
-    BACKUPLEGEND=$BACKUPLEGEND"1"
-fi
-if [ "$NOSPLASH2" == 0 ]; then
-    BACKUPLEGEND=$BACKUPLEGEND"2"
-fi
-
-if [ ! "$BACKUPLEGEND" == "" ]; then
-    BACKUPLEGEND=$BACKUPLEGEND-
-fi
-
-
 TIMESTAMP="`date +%Y%m%d-%H%M`"
-DESTDIR="$BACKUPPATH/$SUBNAME$BACKUPLEGEND$TIMESTAMP"
+DESTDIR="/sdcard/nandroid/$DEVICEID/$TIMESTAMP"
 if [ ! -d $DESTDIR ]; then 
 	mkdir -p $DESTDIR
 	if [ ! -d $DESTDIR ]; then 
-		$ECHO "error: cannot create $DESTDIR"
+		echo "error: cannot create $DESTDIR"
 		umount /system 2>/dev/null
 		umount /data 2>/dev/null
 		umount /sdcard 2>/dev/null
@@ -1084,7 +199,7 @@
 else
 	touch $DESTDIR/.nandroidwritable
 	if [ ! -e $DESTDIR/.nandroidwritable ]; then
-		$ECHO "error: cannot write to $DESTDIR"
+		echo "error: cannot write to $DESTDIR"
 		umount /system 2>/dev/null
 		umount /data 2>/dev/null
 		umount /sdcard 2>/dev/null
@@ -1094,11 +209,11 @@
 fi
 
 # 3.
-$ECHO "checking free space on sdcard"
+echo "checking free space on sdcard"
 FREEBLOCKS="`df -k /sdcard| grep sdcard | awk '{ print $4 }'`"
 # we need about 130MB for the dump
 if [ $FREEBLOCKS -le 130000 ]; then
-	$ECHO "Error: not enough free space available on sdcard (need 130mb), aborting."
+	echo "error: not enough free space available on sdcard (need 130mb), aborting."
 	umount /system 2>/dev/null
 	umount /data 2>/dev/null
 	umount /sdcard 2>/dev/null
@@ -1108,683 +223,71 @@
 
 
 if [ -e /dev/mtd/mtd6ro ]; then
-    if [ "$NOSPLASH1" == 0 ]; then
-	$ECHO -n "Dumping splash1 from device over tcp to $DESTDIR/splash1.img..."
+	echo -n "Dumping splash1 from device over tcp to $DESTDIR/splash1.img..."
 	dd if=/dev/mtd/mtd6ro of=$DESTDIR/splash1.img skip=19072 bs=2048 count=150 2>/dev/null
-	$ECHO "done"
+	echo "done"
 	sleep 1s
-    else
-        $ECHO "Dump of the splash1 image suppressed."
-    fi
-    if [ "$NOSPLASH2" == 0 ]; then
-	$ECHO -n "Dumping splash2 from device over tcp to $DESTDIR/splash2.img..."
+	echo -n "Dumping splash2 from device over tcp to $DESTDIR/splash2.img..."
 	dd if=/dev/mtd/mtd6ro of=$DESTDIR/splash2.img skip=19456 bs=2048 count=150 2>/dev/null
-	$ECHO "done"
-    else
-        $ECHO "Dump of the splash2 image suppressed."
-    fi
+	echo "done"
 fi
 
 
 # 5.
 for image in boot recovery misc; do
-
-    case $image in
-        boot)
-            if [ "$NOBOOT" == 1 ]; then
-                $ECHO "Dump of the boot partition suppressed."
-                continue
-            fi
-            ;;
-        recovery)
-            if [ "$NORECOVERY" == 1 ]; then
-                $ECHO "Dump of the recovery partition suppressed."
-                continue
-            fi
-            ;;
-        misc)
-            if [ "$NOMISC" == 1 ]; then
-                $ECHO "Dump of the misc partition suppressed."
-                continue
-            fi
-            ;;
-    esac
-
 	# 5a
 	DEVICEMD5=`$dump_image $image - | md5sum | awk '{ print $1 }'`
 	sleep 1s
 	MD5RESULT=1
 	# 5b
-	$ECHO -n "Dumping $image to $DESTDIR/$image.img..."
+	echo -n "Dumping $image to $DESTDIR/$image.img..."
 	ATTEMPT=0
 	while [ $MD5RESULT -eq 1 ]; do
 		let ATTEMPT=$ATTEMPT+1
 		# 5b1
-		$dump_image $image $DESTDIR/$image.img $OUTPUT
+		$dump_image $image $DESTDIR/$image.img 
 		sync
 		# 5b3
-		echo "${DEVICEMD5}  $DESTDIR/$image.img" | md5sum -c -s - $OUTPUT
+		echo "${DEVICEMD5}  $DESTDIR/$image.img" | md5sum -c -s -
 		if [ $? -eq 1 ]; then
 			true
 		else
 			MD5RESULT=0
 		fi
 		if [ "$ATTEMPT" == "5" ]; then
-			$ECHO "Fatal error while trying to dump $image, aborting."
+			echo "fatal error while trying to dump $image, aborting"
 			umount /system
 			umount /data
 			umount /sdcard
 			exit 1
 		fi
 	done
-	$ECHO "done"
+	echo "done"
 done
 
 # 6
 for image in system data cache; do
-    case $image in
-        system)
-            if [ "$NOSYSTEM" == 1 ]; then
-                $ECHO "Dump of the system partition suppressed."
-                continue
-            fi
-            ;;
-        data)
-            if [ "$NODATA" == 1 ]; then
-                $ECHO "Dump of the data partition suppressed."
-                continue
-            fi
-            ;;
-        cache)
-            if [ "$NOCACHE" == 1 ]; then
-                $ECHO "Dump of the cache partition suppressed."
-                continue
-            fi
-            ;;
-    esac
-
 	# 6a
-	$ECHO -n "Dumping $image to $DESTDIR/$image.img..."
-	$mkyaffs2image /$image $DESTDIR/$image.img $OUTPUT
+	echo -n "Dumping $image to $DESTDIR/$image.img..."
+	$mkyaffs2image /$image $DESTDIR/$image.img
 	sync
-	$ECHO "done"
+	echo "done"
 done
 
-# Backing up the ext2 partition, not really for the backup but to switch ROMS and apps at the same time.
-
-if [ "$EXT2" == 1 ]; then
-    $ECHO "Storing the ext2(Apps, Dalvik-cache) contents in the backup folder."
-
-    CHECK1=`mount | grep /system`
-    if [ "$CHECK1" == "" ]; then
-        mount /system 2>/dev/null
-    fi
-    CHECK2=`mount | grep /system/sd`
-    if [ "$CHECK2" == "" ]; then
-        mount /system/sd 2>/dev/null
-    fi
-    
-    CHECK1=`mount | grep /system`
-    CHECK2=`mount | grep /system/sd`
-    if [ "$CHECK1" == "" -o "$CHECK2" == "" ]; then
-          $ECHO "Warning: --ext2 specified but unable to mount the ext2 partition."
-          exit 1
-    else
-        
-        CWD=`pwd`
-        cd /system/sd
-        # Depending on the whether we want it compressed we do either or.
-        if [ "$COMPRESS" == 0 ]; then 
-            tar -cvf $DESTDIR/ext2.tar ./
-        else
-            if [ "$DEFAULTCOMPRESSOR" == "bzip2" ]; then
-                tar -cvjf $DESTDIR/ext2.tar.bz2 ./
-            else
-                tar -cvzf $DESTDIR/ext2.tgz ./
-            fi
-        fi
-        cd $CWD
-        umount /system/sd
-    fi
-fi
-
 
 # 7.
-$ECHO -n "generating md5sum file..."
+echo -n "generating md5sum file..."
 CWD=$PWD
 cd $DESTDIR
 md5sum *img > nandroid.md5
-
-# 7b.
-if [ "$COMPRESS" == 1 ]; then
-    $ECHO "Compressing the backup, may take a bit of time, please wait..."
-    $ECHO "checking free space on sdcard for the compression operation."
-    FREEBLOCKS="`df -k /sdcard| grep sdcard | awk '{ print $4 }'`"
-    # we need about 70MB for the intermediate storage needs
-    if [ $FREEBLOCKS -le 70000 ]; then
-	$ECHO "error: not enough free space available on sdcard for compression operation (need 70mb)"
-        $ECHO "leaving this backup uncompressed."
-    else
-        # we are already in $DESTDIR, start compression from the smallest files
-        # to maximize space for the largest's compression, less likely to fail.
-        # To decompress reverse the order.
-        $DEFAULTCOMPRESSOR $DEFAULTLEVEL `ls -S -r * | grep -v ext2`
-    fi
-fi
-
 cd $CWD
-$ECHO "done"
+echo "done"
 
 # 8.
-$ECHO "unmounting system, data and sdcard"
+echo "unmounting system, data and sdcard"
 umount /system
 umount /data
 umount /sdcard
 
 # 9.
-$ECHO "Backup successful."
-if [ "$AUTOREBOOT" == 1 ]; then
-    reboot
-fi
-exit 0
-fi
-
-
-# ----------------------------------GETTING UPDATES DIRECT FROM THE WEB USING WIFI-------------
-
-if [ "$WEBGET" == 1 ]; then
-    $ECHO "mounting system and data read-only, sdcard read-write"
-    umount /system 2>/dev/null
-    umount /data 2>/dev/null
-    umount /sdcard 2>/dev/null
-
-    # Since we are in recovery, these file-systems have to be mounted
-    $ECHO "Mounting /system and /data for starting WiFi"
-    mount -o ro /system || FAIL=1
-    # Need to write to this system to setup nameservers for the wifi
-    mount -o rw /data || FAIL=2
-    mount /sdcard || mount /dev/block/mmcblk0 /sdcard || FAIL=3
-
-    case $FAIL in
-	1) $ECHO "Error mounting system read-only"; umount /system /data /sdcard; exit 1;;
-	2) $ECHO "Error mounting data read-write"; umount /system /data /sdcard; exit 1;;
-	3) $ECHO "Error mounting sdcard read-write"; umount /system /data /sdcard; exit 1;;
-    esac
-
-    if [ "$WEBGETSOURCE" == "" ]; then 
-        # Set the URL to the current latest update
-        if [ "$ITSANUPDATE" == 1 ]; then
-            WEBGETSOURCE=$DEFAULTWEBUPDATE
-        else
-            WEBGETSOURCE=$DEFAULTWEBIMAGE
-        fi
-    fi
-
-    if [ "$AUTOAPPLY" == 0 ]; then
-        # Need to check space on sdcard only if we dump the update there.
-        $ECHO "Checking free space on sdcard for the update download."
-        FREEBLOCKS="`df -k /sdcard| grep sdcard | awk '{ print $4 }'`"
-        # we need about 50MB for the storage needs
-        if [ $FREEBLOCKS -le 50000 ]; then
-            $ECHO "Error: not enough free space available on sdcard for the update operation (need 50mb)"
-            $ECHO "Please free up space before invoking this option again."
-            $ECHO "Cleaning up, unmounting file systems, aborting."
-            umount /system /data /sdcard
-            exit 1
-        fi
-    fi
-
-    if [ ! `basename $WEBGETSOURCE` == `basename $WEBGETSOURCE .zip` ]; then
-        # It is a zip, not img.
-        ITSANUPDATE=1
-    else
-        if [ ! `basename $WEBGETSOURCE` == `basename $WEBGETSOURCE .img` ]; then
-           # It is an img file.
-           ITSANIMAGE=1
-        else
-            # Unknown file type
-            $ECHO "Unknown file type, cleaning up, aborting."
-            umount /system /data /sdcard
-            exit 1
-        fi
-    fi
-
-
-    if [ "$ITSANUPDATE" == 1 -a "$AUTOAPPLY" == 0 ]; then
-         # Move the previous update aside, if things go badly with the new update, it is good
-         # to have the last one still around :-)
-
-         # If we cannot figure out what the file name used to be, create this new one with a time stamp
-        OLDNAME="OLD-update-`date +%Y%m%d-%H%M`"
-
-        if [ -e $WEBGETTARGET/update.zip ]; then
-            $ECHO "There is already an update.zip in $WEBGETTARGET, backing it up to"
-            if [ -e $WEBGETTARGET/update.name ]; then
-                OLDNAME=`cat $WEBGETTARGET/update.name`
-                # Backup the name file (presumably contains the old name of the update.zip
-                mv -f $WEBGETTARGET/update.name $WEBGETTARGET/`basename $OLDNAME .zip`.name
-            fi
-            $ECHO "`basename $OLDNAME .zip`.zip"
-            mv -f $WEBGETTARGET/update.zip $WEBGETTARGET/`basename $OLDNAME .zip`.zip
-
-            # Backup the MD5sum file
-            if [ -e $WEBGETTARGET/update.MD5sum ]; then
-                mv -f $WEBGETTARGET/update.MD5sum $WEBGETTARGET/`basename $OLDNAME .zip`.MD5sum
-            fi
-        fi
-    fi
-
-    $ECHO "Starting WiFI, please wait..."
-    insmod /system/lib/modules/wlan.ko
-
-    wlan_loader -f /system/etc/wifi/Fw1251r1c.bin -e /proc/calibration -i /system/etc/wifi/tiwlan.ini
-
-    CWD=`pwd`
-    cd /data/local/tmp
-
-    wpa_supplicant -f -Dtiwlan0 -itiwlan0 -c/data/misc/wifi/wpa_supplicant.conf&
-
-    sleep 5
-    $ECHO "wpa_supplicant started"
-    $ECHO ""
-
-    echo "nameserver $NAMESERVER1" >/etc/resolv.conf
-    echo "nameserver $NAMESERVER2" >>/etc/resolv.conf
-
-    #We want the wifi to assign a dynamic address
-    $ECHO "Starting DHCPCD server (dynamic address assignment)"
-    # -BKL flags????
-    dhcpcd -d tiwlan0 2>/dev/null &
-
-    # Have to wait for it to init stuff
-    sleep 10
-
-
-    CHECK1=`ps | grep -v grep | grep dhcpcd`
-    CHECK2=`ps | grep -v grep | grep wpa_supplicant`
-    if [ "$CHECK1" == "" -o "$CHECK2" == "" ]; then
-         $ECHO "Error: wpa_supplicant or DHCPCD server is not running, cleaning up, aborting"
-         rm -- -Dtiwlan0
-         cd $CWD
-
-         $ECHO "unmounting /system, /data and /sdcard"
-         umount /system
-         umount /data
-         umount /sdcard
-         exit 2
-    fi
-
-    $ECHO "DHCPCD server started"
-    $ECHO ""
-
-    $ECHO "WiFi is running!"
-    $ECHO ""
-
-    if [ "$AUTOAPPLY" == 1 ]; then
-        $ECHO "Autoapply is on, retrieving the update into /cache/`basename $WEBGETSOURCE`"
-
-        wget -O /cache/`basename $WEBGETSOURCE` $WEBGETSOURCE $OUTPUT
-
-        if [ ! -e /cache/recovery ]; then
-            mkdir /cache/recovery
-            chmod 777 /cache/recovery
-        fi
-        if [ -e /cache/recovery/command ]; then
-            echo "--update_package=CACHE:`basename $WEBGETSOURCE`" >>/cache/recovery/command
-        else
-            echo "--update_package=CACHE:`basename $WEBGETSOURCE`" >/cache/recovery/command
-        fi
-        chmod 555 /cache/recovery/command
-        # Once rebooted the update will be applied.
-
-    else
-
-        if [ "$ITSANUPDATE" == 1 ]; then
-            $ECHO "Retrieving system update into $WEBGETTARGET/update.zip, please wait..."
-            wget -O $WEBGETTARGET/update.zip $WEBGETSOURCE $OUTPUT
-
-            echo "`basename $WEBGETSOURCE`" > $WEBGETTARGET/update.name
-            $ECHO ""
-            $ECHO "Update retrieved, if concerned, please compare the md5sum with the number"
-            $ECHO "you see on the web page, if it is NOT the same, the retrieval"
-            $ECHO "has failed and has to be repeated."
-            $ECHO ""
-            $ECHO `md5sum $WEBGETTARGET/update.zip | tee $WEBGETTARGET/update.MD5sum`
-            $ECHO ""
-            $ECHO "MD5sum has been stored in $WEBGETTARGET/update.MD5sum"
-        else
-            $ECHO "Retrieving the image into $WEBGETTARGET/`basename $WEBGETSOURCE`, please wait..."
-            wget -O $WEBGETTARGET/`basename $WEBGETSOURCE` $WEBGETSOURCE $OUTPUT
-            $ECHO ""
-            $ECHO "$WEBGETSOURCE retrieved, if concerned, please compare the md5sum with the number"
-            $ECHO "you see on the web page, if it is NOT the same, the retrieval"
-            $ECHO "has failed and has to be repeated."
-            $ECHO ""
-            md5sum $WEBGETTARGET/`basename $WEBGETSOURCE` | tee $WEBGETTARGET/`basename $WEBGETSOURCE .img`.MD5sum $OUTPUT
-            $ECHO ""
-            $ECHO "MD5sum has been stored in $WEBGETTARGET/`basename $WEBGETSOURCE .img`.MD5sum"
-            $ECHO ""
-            $ECHO -n "Would you like to flash this image into boot or recovery? (or no for no flash) "
-            read ANSWER
-            if [ "$ANSWER" == "boot" ]; then
-                 $ECHO "Flashing $WEBGETTARGET/`basename $WEBGETSOURCE` into the boot partition."
-                $flash_image boot $WEBGETTARGET/`basename $WEBGETSOURCE`
-            else
-                if [ "$ANSWER" == "recovery" ]; then
-                    $ECHO "Moving $WEBGETTARGET/`basename $WEBGETSOURCE` into the /data/recovery.img"
-                    $ECHO "and /system/recovery.img"
-                    cp -f $WEBGETTARGET/`basename $WEBGETSOURCE` /data/recovery.img
-                    mount -o rw,remount /system
-                    cp -f $WEBGETTARGET/`basename $WEBGETSOURCE` /system/recovery.img
-                    $ECHO "Depending on the settings of your specific ROM, the recovery.img will be"
-                    $ECHO "flashed at the normal bootup time either from /system or /data."
-                else
-                    $ECHO "Not flashing the image."
-                fi
-            fi
-        fi
-        $ECHO ""
-
-    fi
-
-    $ECHO "Shutting down DHCPCD service and wpa_supplicant"
-    killall -TERM dhcpcd
-    TEMPVAR=`ps | grep -v grep | grep wpa_supplicant`
-    TEMPVAR=`echo $TEMPVAR | cut -f 1 -d ' '`
-    kill -TERM $TEMPVAR
-
-    while true; do
-        CHECK=`ps | grep -v grep | grep dhcpcd`
-        if [ ! "$CHECK" == "" ]; then
-            sleep 1
-        else
-            break
-        fi
-    done
-
-    while true; do
-        CHECK=`ps | grep -v grep | grep wpa_supplicant`
-        if [ ! "$CHECK" == "" ]; then
-            sleep 1
-        else
-            break
-        fi
-    done
-    #sleep 5
-
-    $ECHO "Cleaning up..."
-    # Looks like cannot clean up wlan module since chdir is missing
-    #rmmod wlan
-    rm -- -Dtiwlan0
-    cd $CWD
-
-    $ECHO "unmounting /system, /data and /sdcard"
-    umount /system
-    umount /data
-    umount /sdcard
-
-    if [ "$AUTOAPPLY" == 1 ]; then
-        $ECHO "Auto apply update is on, rebooting into recovery to apply the update."
-        $ECHO "When the update is complete reboot into the normal mode."
-        $ECHO "The device will reboot and the update will be applied in 10 seconds!"
-        sleep 10
-        reboot recovery
-    else
-        if [ "$ITSANUPDATE" == 1 ]; then
-            $ECHO "If you put the update into a folder other than /sdcard you need to use --getupdate to"
-            $ECHO "prepare the update for application."
-            $ECHO "You may want to execute 'reboot recovery' and choose update option to flash the update."
-            $ECHO "Or in the alternative, shutdown your phone with reboot -p, and then press <CAMERA>+<POWER>"
-            $ECHO "to initiate a normal system update procedure, if you have stock SPL."
-        fi
-        exit 0
-    fi
-fi
-
-# -------------------------------------DELETION, COMPRESSION OF BACKUPS---------------------------------
-if [ "$COMPRESS" == 1 -o "$DELETE" == 1 ]; then
-    $ECHO "Unmounting /system and /data to be on the safe side, mounting /sdcard read-write."
-    umount /system 2>/dev/null
-    umount /data 2>/dev/null
-    umount /sdcard 2>/dev/null
-
-    FAIL=0
-    # Since we are in recovery, these file-system have to be mounted
-    $ECHO "Mounting /sdcard to look for backups."
-    mount /sdcard || mount /dev/block/mmcblk0 /sdcard || FAIL=1
-
-    if [ "$FAIL" == 1 ]; then
-	$ECHO "Error mounting /sdcard read-write, cleaning up..."; umount /system /data /sdcard; exit 1
-    fi
-
-    $ECHO "The current size of /sdcard FAT32 filesystem is `du /sdcard | tail -1 | cut -f 1 -d '/'`Kb"
-    $ECHO ""
-
-    # find the oldest backup, but show the user other options
-    $ECHO "Looking for the oldest backup to delete, newest to compress,"
-    $ECHO "will display all choices!"
-    $ECHO ""
-    $ECHO "Here are the backups you have picked within this repository $BACKUPPATH:"
-
-    if [ "$DELETE" == 1 ]; then
-        RESTOREPATH=`ls -td $BACKUPPATH/*$SUBNAME* 2>/dev/null | tail -1`
-        ls -td $BACKUPPATH/*$SUBNAME* 2>/dev/null $OUTPUT
-    else
-        RESTOREPATH=`ls -trd $BACKUPPATH/*$SUBNAME* 2>/dev/null | tail -1`
-        ls -trd $BACKUPPATH/*$SUBNAME* 2>/dev/null $OUTPUT
-    fi
-    $ECHO " "
-
-    if [ "$RESTOREPATH" = "" ];	then
-	$ECHO "Error: no backups found"
-	    exit 2
-	else
-            if [ "$DELETE" == 1 ]; then
-                $ECHO "Default backup to delete is the oldest: $RESTOREPATH"
-                $ECHO ""
-                $ECHO "Other candidates for deletion are: "
-                ls -td $BACKUPPATH/*$SUBNAME* 2>/dev/null | grep -v $RESTOREPATH $OUTPUT
-            fi
-            if [ "$COMPRESS" == 1 ]; then
-                $ECHO "Default backup to compress is the latest: $RESTOREPATH"
-                $ECHO ""
-                $ECHO "Other candidates for compression are: "
-                ls -trd $BACKUPPATH/*$SUBNAME* 2>/dev/null | grep -v $RESTOREPATH $OUTPUT
-            fi
-
-            $ECHO ""
-            $ECHO "Using G1 keyboard, enter a unique name substring to change it and <CR>"
-            $ECHO -n "or just <CR> to accept: "
-            if [ "$ASSUMEDEFAULTUSERINPUT" == 0 ]; then
-                 read SUBSTRING
-            else
-                $ECHO "Accepting default."
-                SUBSTRING=""
-            fi
-
-            if [ ! "$SUBSTRING" == "" ]; then
-                 RESTOREPATH=`ls -td $BACKUPPATH/*$SUBNAME* 2>/dev/null | grep $SUBSTRING | tail -1`
-            else
-                 RESTOREPATH=`ls -td $BACKUPPATH/*$SUBNAME* 2>/dev/null | tail -1`
-            fi
-            if [ "$RESTOREPATH" = "" ]; then
-                 $ECHO "Error: no matching backup found, aborting"
-                 exit 2
-            fi
-     fi
-		
-     if [ "$DELETE" == 1 ]; then
-         $ECHO "Deletion path: $RESTOREPATH"
-         $ECHO ""
-         $ECHO "WARNING: Deletion of a backup is an IRREVERSIBLE action!!!"
-         $ECHO -n "Are you absolutely sure? {yes | YES | Yes | no | NO | No}: "
-         if [ "$ASSUMEDEFAULTUSERINPUT" == 0 ]; then
-             read ANSWER
-         else
-             ANSWER=yes
-             $ECHO "Accepting default."
-         fi
-         $ECHO ""
-         if [ "$ANSWER" == "yes" -o "$ANSWER" == "YES" -o "$ANSWER" == "Yes" ]; then
-             rm -rf $RESTOREPATH
-             $ECHO ""
-             $ECHO "$RESTOREPATH has been permanently removed from your SDCARD."
-             $ECHO "Post deletion size of the /sdcard FAT32 filesystem is `du /sdcard | tail -1 | cut -f 1 -d '/'`Kb"
-         else 
-             if [ "$ANSWER" == "no" -o "$ANSWER" == "NO" -o "$ANSWER" == "No" ]; then
-                 $ECHO "The chosen backup will NOT be removed."
-             else 
-                 $ECHO "Invalid answer: assuming NO."
-             fi
-         fi
-     fi
-
-     if [ "$COMPRESS" == 1 ]; then
-         
-         CWD=`pwd`
-         cd $RESTOREPATH
-
-         if [ `ls *.bz2 2>/dev/null|wc -l` -ge 1 -o `ls *.gz 2>/dev/null|wc -l` -ge 1 ]; then
-             $ECHO "This backup is already compressed, cleaning up, aborting..."
-             cd $CWD
-             umount /sdcard 2>/dev/null
-             exit 0
-         fi
-
-         $ECHO "checking free space on sdcard for the compression operation."
-         FREEBLOCKS="`df -k /sdcard| grep sdcard | awk '{ print $4 }'`"
-         # we need about 70MB for the intermediate storage needs
-         if [ $FREEBLOCKS -le 70000 ]; then
-             $ECHO "Error: not enough free space available on sdcard for compression operation (need 70mb)"
-             $ECHO "leaving this backup uncompressed."
-         else
-             # we are already in $DESTDIR, start compression from the smallest files
-             # to maximize space for the largest's compression, less likely to fail.
-             # To decompress reverse the order.
-             $ECHO "Pre compression size of the /sdcard FAT32 filesystem is `du /sdcard | tail -1 | cut -f 1 -d '/'`Kb"
-             $ECHO ""
-             $ECHO "Compressing the backup may take a bit of time, please wait..."
-             $DEFAULTCOMPRESSOR $DEFAULTLEVEL `ls -S -r *`
-             $ECHO ""
-             $ECHO "Post compression size of the /sdcard FAT32 filesystem is `du /sdcard | tail -1 | cut -f 1 -d '/'`Kb"
-         fi
-     fi
-
-     $ECHO "Cleaning up."
-     cd $CWD
-     umount /sdcard 2>/dev/null
-     exit 0
-
-fi
-
-if [ "$GETUPDATE" == 1 ]; then
-    $ECHO "Unmounting /system and /data to be on the safe side, mounting /sdcard read-write."
-    umount /system 2>/dev/null
-    umount /data 2>/dev/null
-    umount /sdcard 2>/dev/null
-
-    FAIL=0
-    # Since we are in recovery, these file-system have to be mounted
-    $ECHO "Mounting /sdcard to look for updates to flash."
-    mount /sdcard || mount /dev/block/mmcblk0 /sdcard || FAIL=1
-
-    if [ "$FAIL" == 1 ]; then
-	$ECHO "Error mounting /sdcard read-write, cleaning up..."; umount /system /data /sdcard; exit 1
-    fi
-
-    $ECHO "The current size of /sdcard FAT32 filesystem is `du /sdcard | tail -1 | cut -f 1 -d '/'`Kb"
-    $ECHO ""
-
-    # find all the files with update in them, but show the user other options
-    $ECHO "Looking for all *update*.zip candidate files to flash."
-    $ECHO ""
-    $ECHO "Here are the updates limited by the subname $SUBNAME found"
-    $ECHO "within the repository $DEFAULTUPDATEPATH:"
-    $ECHO ""
-    RESTOREPATH=`ls -trd $DEFAULTUPDATEPATH/*$SUBNAME*.zip 2>/dev/null | grep update | tail -1`
-    if [ "$RESTOREPATH" == "" ]; then
-        $ECHO "Error: found no matching updates, cleaning up, aborting..."
-        umount /sdcard 2>/dev/null
-        exit 2
-    fi
-    ls -trd $DEFAULTUPDATEPATH/*$SUBNAME*.zip 2>/dev/null | grep update $OUTPUT
-    $ECHO ""
-    $ECHO "The default update is the latest $RESTOREPATH"
-    $ECHO ""
-    $ECHO "Using G1 keyboard, enter a unique name substring to change it and <CR>"
-    $ECHO -n "or just <CR> to accept: "
-    if [ "$ASSUMEDEFAULTUSERINPUT" == 0 ]; then
-         read SUBSTRING
-    else
-         $ECHO "Accepting default."
-         SUBSTRING=""
-    fi
-    $ECHO ""
-
-    if [ ! "$SUBSTRING" == "" ]; then
-          RESTOREPATH=`ls -trd $DEFAULTUPDATEPATH/*$SUBNAME*.zip 2>/dev/null | grep update | grep $SUBSTRING | tail -1`
-    else
-          RESTOREPATH=`ls -trd $DEFAULTUPDATEPATH/*$SUBNAME*.zip 2>/dev/null | grep update | tail -1`
-    fi
-    if [ "$RESTOREPATH" = "" ]; then
-          $ECHO "Error: no matching backups found, aborting"
-          exit 2
-    fi
-
-    if [ "$RESTOREPATH" == "/sdcard/update.zip" ]; then
-        $ECHO "You chose update.zip, it is ready for flashing, there nothing to do."
-    else
-
-        # Things seem ok so far.
-
-        # Move the previous update aside, if things go badly with the new update, it is good
-        # have the last one still around :-)
-
-        # If we cannot figure out what the file name used to be, create this new one with a time stamp
-        OLDNAME="OLD-update-`date +%Y%m%d-%H%M`"
-
-        if [ -e /sdcard/update.zip ]; then
-            $ECHO "There is already an update.zip in /sdcard, backing it up to"
-            if [ -e /sdcard/update.name ]; then
-                OLDNAME=`cat /sdcard/update.name`
-                # Backup the name file (presumably contains the old name of the update.zip
-                mv -f /sdcard/update.name /sdcard/`basename $OLDNAME .zip`.name
-            fi
-            $ECHO "`basename $OLDNAME .zip`.zip"
-            mv -f /sdcard/update.zip /sdcard/`basename $OLDNAME .zip`.zip
-
-            # Backup the MD5sum file
-            if [ -e /sdcard/update.MD5sum ]; then
-                mv -f /sdcard/update.MD5sum /sdcard/`basename $OLDNAME .zip`.MD5sum
-            fi
-        fi
-
-        if [ -e $DEFAULTUPDATEPATH/`basename $RESTOREPATH .zip`.MD5sum ]; then
-            mv -f $DEFAULTUPDATEPATH/`basename $RESTOREPATH .zip`.MD5sum /sdcard/update.MD5sum
-        else
-            $ECHO `md5sum $RESTOREPATH | tee /sdcard/update.MD5sum`
-            $ECHO ""
-            $ECHO "MD5sum has been stored in /sdcard/update.MD5sum"
-            $ECHO ""
-        fi
-        if [ -e $DEFAULTUPDATEPATH/`basename $RESTOREPATH .zip`.name ]; then
-            mv -f $DEFAULTUPDATEPATH/`basename $RESTOREPATH .zip`.name /sdcard/update.name
-        else
-            echo "`basename $RESTOREPATH`" > /sdcard/update.name
-        fi
-
-        mv -i $RESTOREPATH /sdcard/update.zip
-
-
-        $ECHO "Your file $RESTOREPATH has been moved to the root of sdcard, and is ready for flashing!!!"
-
-    fi
-
-    $ECHO "You may want to execute 'reboot recovery' and then choose the update option to flash the update."
-    $ECHO "Or in the alternative, shutdown your phone with reboot -p, and then press <CAMERA>+<POWER> to"
-    $ECHO "initiate a standard update procedure if you have stock SPL."
-    $ECHO ""
-    $ECHO "Cleaning up and exiting."
-    umount /sdcard 2>/dev/null
-    exit 0
-fi
+echo "Backup successful."
