We designed, developed, deployed, and evaluated the Collaborative nanoManipulator (CnM), a distributed, collaborative virtual environment system supporting remote scientific collaboration between users of the nanoManipulator interface to atomic force microscopes. This paper describes the entire collaboration system, but focuses on the shared nanoManipulator (nM) application. To be readily accepted by users, the shared nM application had to have the same high level of interactivity as the single-user system and include all the functions of the single-user system. In addition the application had to support a user's ability to interleave working privately and working collaboratively. Based on our experience developing the CnM, we present: a method of analyzing applications to characterize the concurrency requirements for sharing data between collaborating sites, examples of data structures that support distributed collaboration and interleaved private and collaborative work, and guidelines for selecting appropriate synchronization and concurrency control schemes.