synthetic refactored. Also, readBeforeFirstWrite can be ignored now