self-adapting program