use atomic booleans in AtomicOperation class to control commit/failure flow more accurately