A program that can break itself apart and put itself backtogether.