public Impact hasCollided(CollideableObject a) {
		if (a.shape == Shape.CIRCLE && shape == Shape.CIRCLE) 
		{
			return Impact.NONE; //balls cannot collide with each other
		} 
		else 
		{
			if (X + SizeX >= a.X && X <= a.X + a.SizeX) // if the ball's x-position
			{											// is within the bounds of a
				if (Y + SizeY >= a.Y && Y <= a.Y + a.SizeY) // if the ball's y-position
				{											// is within the bounds of a
					if (X + SizeX - Vx <= a.X || X - Vx >= a.X + a.SizeX)
					{						
						if(Y + SizeY - Vy <= a.Y || Y - Vy >= a.Y + a.SizeY)
						{
							return Impact.BOTH;// if ball is about to collide with edge of a
						}
						return Impact.XMPACT;// if ball is about to collide with a from side
					} 
					else 
					{
						return Impact.YMPACT; //ball is about to collide with a from top or bottom
					}
				}
			}
		}
		return Impact.NONE;
	}