Upgrade code from the network

Hello, looking for samples/tips on how to upgrade firmware over the network.

The goal is to remotely upgrade firmware for rabbit 4000 based device connected to the network.

The plan (assuming that there is enough flash to store the new application and the current one) is to FTP the new application, set a flag in non-volatile and reboot.

The module on reboot should check the flag and if it is asserted, it should move the new application into code space OR preferable (not sure if supported by the Rabbit) sitch the start address vector to the new application.

Concrete questions:
Is the start vector redirectionable?
Can the Rabbit copy/move FLASH into code space while running?
How does RFU upgrades the unit? Is the source available (RFU)?