separate resolve_handler so it can be overridden