This paper introduces a relatively simple method for simulating flocking behavior by controlling individual "boids" within the flock. Rather than previous methods that relied on force-fields, or even required that animators hand-tweak individual boids, they can simulate large flocks automatically by considering each boid individually. Their method is based on particle systems, but with each particle having an orientation and rules set up to guide its interaction with other particles. Most of their paper is dedicated to describing those rules and how they generate believable flocking motions. Physics, including banking, are considered in their system, along with collision avoidance, velocity matching and flock centering. The last two are required so that individual boid behaviors are combined to form a coherent flock, and act as spring forces between boids, weighted by the squared inverse of distance. Finally, they added both the ability to script flock behaviour and the ability to place obstacles into the system for flocks to avoid.