add binding_of_caller to support better errors