minor: use respond_to? instead of is_a?