refactored to make NewAddress atomic