adapt to context