added mutexes. announce is still buggy