With NSLock instead of @synchronized