framework for key binding