Atmega2560 bootlader - loading program from flash memory

I would like to have ability for remote program update. My plan is to upload program to flash memory check crc code and then load new program from flash memory. I need to modify original bootlader to be able to load program "normally" and using flash memory. Is it possible to do that? Are there any bootladers that already have such functionality?