use ActiveSupport for rescue_from