refactored using an external vector library and started adding flocking behaviour