As collaboration in virtual environments becomes more object-focused and closely coupled, the frequency of conflicts in accessing shared objects can increase. In addition, two kinds of concurrency control “surprises” become more disruptive to the collaboration. Undo surprises can occur when a previously visible change is undone because of an access conflict. Intention surprises can happen when a concurrent action by a remote session changes the structure of a shared object at the same perceived time as a local access of that object, such that the local user might not get what they expect because they have not had time to visually process the change. A hierarchy of three concurrency control mechanisms is presented in descending order of collaborative surprises, which allows the concurrency scheme to be tailored to the tolerance for such surprises. One mechanism is semioptimistic; the other two are pessimistic. Designed for peer-to-peer virtual environments in which several threads have access to the shared scene graph, these algorithms are straightforward and relatively simple. They can be implemented using C/C++ and Java, under Windows and Unix, on both desktop and immersive systems. In a series of usability experiments, the average performance of the most conservative concurrency control mechanism on a local LAN was found to be quite acceptable.