rearchitect the program