short-circuit if already done