which is now multiple-invocation-safe