context-adaptive algorithms