adaptive updates