refactored blockOnConflict, passes a few tests