may be final without mutex