we could use wraps here, but we'd still need to catch an AttributeError from that to avoid a crash.