fix atomicity in backend implementations