based on Craig Reynold's "boids"