docs: def _prepare(constituents, t0, t = None, radians = True):
  		"""
  		Return constituent speed and equilibrium argument at a given time, and constituent node factors at given times.
  		Arguments:
  		constituents -- list of constituents to prepare
  		t0 -- time at which to evaluate speed and equilibrium argument for each constituent
  		t -- list of times at which to evaluate node factors for each constituent (default: t0)
  		radians -- whether to return the angular arguments in radians or degrees (default: True)
  		"""
  		#The equilibrium argument is constant and taken at the beginning of the
  		#time series (t0).  The speed of the equilibrium argument changes very
  		#slowly, so again we take it to be constant over any length of data. The
  		#node factors change more rapidly.
  		if isinstance(t0, Iterable):
  			t0 = t0[0]
  		if t is None:
  			t = [t0]
  		if not isinstance(t, Iterable):
  			t = [t]
  		a0 = astro(t0)
  		a = [astro(t_i) for t_i in t]
  
  		#For convenience give u, V0 (but not speed!) in [0, 360)
  		V0 = np.array([c.V(a0) for c in constituents])[:, np.newaxis]
  		speed = np.array([c.speed(a0) for c in constituents])[:, np.newaxis]
  		u = [np.mod(np.array([c.u(a_i) for c in constituents])[:, np.newaxis], 360.0)
  			 for a_i in a]
  		f = [np.mod(np.array([c.f(a_i) for c in constituents])[:, np.newaxis], 360.0)
  			 for a_i in a]
  
  		if radians:
  			speed = d2r*speed
  			V0 = d2r*V0
  			u = [d2r*each for each in u]
  		return speed, u, f, V0