should all work, including race conditions / edge cases