This paper describes several observations of the behavior of flocks, herds, and schools that enables us to create a simulation that can pleasingly portray flocks. First it assumes each bird is a boid, a slight generalization of particle systems that has orientation in addition to position. It moves the boids along the object's forward direction using the object's local coordinate system and conservese momentum. There are several evolutionary factors that cause birds to prefer flocking. For simulation purposes, we can categorize the flocks behavior into a few. Collision avoidance, velocity matching, flock centering. Priority is also given so the flock can also split to avoid obstacles. Also for better running time, we can use the fact that birds most likely only use local information from things that they can perceive. Thus not needing to obtain information from every single bird in the flock. Hence, using spacial partitioning methods, we can lower the running time to O(n) from O(n^2). For more realistic behavior modeling, it suggests the influence of a nearby bird is inversely proportional to the square or cube of the distance rather than linear. For avoiding environmental obstacles, 2 methods can be used. A force field concept or steer-to-avoid method. Steer-to-avoid generally provides more correct and detailed behavior.