use simple reentrancy guard to avoid parallel execution