1. A method of remotely upgrading a remote device, comprising: running a Non-Erasable Application (NEA) in said remote device, wherein said NEA is not remotely erasable; upgrading an application program in a non-volatile, programmable memory in said remote device; and executing device commands using said application program in said remote device if upgrading said application program is successful and executing device commands using said NEA in said remote device if upgrading said application program is unsuccessful.