private void checkCollision() {
	   for(int m = 0; m <= usableIndex; m++) {
		   for(int n = 0; n <= usableIndex; n++) {
			   if (n != m) {//checks to see if comparing the same object
				   xDistance = (double) objects[m].getCenterX() - objects[n].getCenterX();
				   yDistance = (double) objects[m].getCenterY() - objects[n].getCenterY();
				   xDistSquared = Math.pow(xDistance, 2);
				   yDistSquared = Math.pow(yDistance, 2);
				   pointsDistance = Math.sqrt((xDistSquared + yDistSquared));
				   if(pointsDistance - 2*objects[n].getRadius() < .001 && xDistance > 0) {
					   	dx = (double) objects[m].getCenterX()-objects[n].getCenterX();
					    dy = (double) objects[m].getCenterY()-objects[n].getCenterY();
						collisionAngle = Math.atan2(dy, dx);
						magnitudeM = Math.sqrt(objects[m].getXMove()*objects[m].getXMove()
									 +objects[m].getYMove()*objects[m].getYMove());
						magnitudeN = Math.sqrt(objects[n].getXMove()*objects[n].getXMove()
									 +objects[n].getYMove()*objects[n].getYMove());
						directionM = Math.atan2(objects[m].getYMove(), objects[m].getXMove());
						directionN = Math.atan2(objects[n].getYMove(), objects[n].getXMove());
						calcXSpeedM = magnitudeM*Math.cos(directionM-collisionAngle);
						calcYSpeedM = magnitudeM*Math.sin(directionM-collisionAngle);
						calcXSpeedN = magnitudeN*Math.cos(directionN-collisionAngle);
						calcYSpeedN = magnitudeN*Math.sin(directionN-collisionAngle);
						finalXSpeedM = ((objects[m].getMass()-objects[n].getMass())*
										calcXSpeedM+(objects[n].getMass()+objects[n].getMass())
										*calcXSpeedN)/(objects[m].getMass()+objects[n].getMass());
						finalXSpeedN = ((objects[m].getMass()+objects[m].getMass())*
										calcXSpeedM+(objects[n].getMass()-objects[m].getMass())
										*calcXSpeedN)/(objects[m].getMass()+objects[n].getMass());
						finalYSpeedM = calcYSpeedM;
						finalYSpeedN = calcYSpeedN;
						actualXSpeedM = (Math.cos(collisionAngle)*finalXSpeedM+
										Math.cos(collisionAngle+Math.PI/2)*finalYSpeedM);
						actualYSpeedM = (Math.sin(collisionAngle)*finalXSpeedM+
										Math.sin(collisionAngle+Math.PI/2)*finalYSpeedM);
						actualXSpeedN = (Math.cos(collisionAngle)*finalXSpeedN+
										Math.cos(collisionAngle+Math.PI/2)*finalYSpeedN);
						actualYSpeedN = (Math.sin(collisionAngle)*finalXSpeedN+
										Math.sin(collisionAngle+Math.PI/2)*finalYSpeedN);
						objects[m].changeXSpeed(actualXSpeedM);
						objects[m].changeYSpeed(actualYSpeedM); 
						objects[n].changeXSpeed(actualXSpeedN);
						objects[n].changeYSpeed(actualYSpeedN);
						//Lessens frequency of sticking
						objects[m].moveX();
						objects[m].moveY();
						objects[n].moveX();
						objects[n].moveY();
					 if(objects[m].getMass()==2) {
						 bigBall = (CollisionMonster)objects[m];
						 bigBall.collideReact();
						 objects[m] = bigBall;
					 }
					 if(objects[n].getMass()==2) {
						 bigBall = (CollisionMonster)objects[n];
						 bigBall.collideReact();
						 objects[n] = bigBall;
					 }
				   }//End of Colliding If
			   }//End of Same Object If
		   }//End of Inner For Loop
	     }//End of Outer For Loop
	   }//End of checkCollision Method