refactored for performance. fixed number of cirlces that get reused