static void stepRK(ArrayList<Body> v, double dt) {
		for (int i = 0; i < v.size(); i++) {
			v.get(i).setF(Body.forces(v.get(i), v, i));
		}
		
		ArrayList<Body> supp = new ArrayList<Body>();		

		for (int i = 0; i < v.size(); i++) {
			Body b = v.get(i);

			double x = b.p.x;
			double y = b.p.y;
			double z = b.p.z;

			double vx = b.v.x;
			double vy = b.v.y;
			double vz = b.v.z;

			double ax = b.f.x / b.mass;
			double ay = b.f.y / b.mass;
			double az = b.f.z / b.mass;

			double newX = x + vx * dt + ax * dt * dt / 2;
			double newY = y + vy * dt + ay * dt * dt / 2;
			double newZ = z + vz * dt + az * dt * dt / 2;

			Point newPoint = new Point(newX, newY, newZ);

			Velocity newV = new Velocity(vx + ax * dt, vy + ay * dt, vz + az
					* dt);
			
			Body b2 = new Body(b.mass, newPoint, newV, new Force(0, 0, 0));
			
			supp.add(b2);			
		}
		
		for (int i = 0; i < supp.size(); i++) {
			supp.get(i).setF(Body.forces(supp.get(i), supp, i));
		}		
		
		for (int i = 0; i < v.size(); i++) {
			Body b = v.get(i);
			Body b2 = supp.get(i);

			double x = b.p.x;
			double y = b.p.y;
			double z = b.p.z;

			b.p.x = (x + dt * (b.v.x + b2.v.x) / 2);
			b.p.y = (y + dt * (b.v.y + b2.v.y) / 2);
			b.p.z = (z + dt * (b.v.z + b2.v.z) / 2);

			double vx = b.v.x;
			double vy = b.v.y;
			double vz = b.v.z;

			b.v.x = (vx + dt * (b.f.x + b2.f.x) / 2);
			b.v.y = (vy + dt * (b.f.y + b2.f.y) / 2);
			b.v.z = (vz + dt * (b.f.z + b2.f.z) / 2);

		}
		
	}