Adapting Program Design