This paper will discuss the design and uses of our virtual laboratory (http://ir.chem.cmu.edu/), a flexible Java applet that allows students to choose from hundreds of standard reagents and manipulate them in a manner that resembles that of a real lab. The lab is intended to support a variety of approaches to chemical education, and the design choices made in pursuit of this goal will be discussed. Next, the uses of the lab in a variety of lecture and laboratory course settings will be presented. In lecture courses, the lab has been used to couple paper-and-pencil activities with chemical manipulations. In most paper and pencil problems, the designer of the question makes the interesting decision of what reagents to mix together, and the student calculates the result. We believe this leads to a narrow emphasis on calculational skills. Our goal-oriented problems invert this by giving students a goal, such as creating a buffer in which a drug will be in its medicinally active form. In pursuing this goal, students make real chemical decisions and see the consequences of these decisions. In laboratory courses, the lab has been used both as a pre-lab, to help students better prepare for their time in the physical lab, and as a post-lab, to help students more fully process their lab experience. In particular, we will discuss the use of the virtual lab to add an element of inquiry learning into the traditionally formatted laboratory program at West Virginia University. Finally, we will discuss the use of the lab to bridge between the lecture and laboratory portions of a course.