By default, instances of UnboundMethod can only be bound to objects that are a kind_of? the method's original class. Pretty lame. rebound allows unbound methods (instances of UnboundMethod class) to be bound to objects of any class. It uses the alias_method_chain pattern to accomplish this, meaning you also get a bind_without_indifference method that retains the original behavior.