def _direct_nbody_step(q,p,m,t,dt,pot,softening,softening_args):
    """One N-body step: drift-kick-drift"""
    #drift
    q12= [symplecticode.leapfrog_leapq(q[ii],p[ii],dt/2.) \
              for ii in range(len(q))]
    #kick
    force= _direct_nbody_force(q12,m,t+dt/2.,pot,softening,softening_args)
    #print(force)
    p= [symplecticode.leapfrog_leapp(p[ii],dt,force[ii]) \
            for ii in range(len(p))]
    #drift
    q= [symplecticode.leapfrog_leapq(q12[ii],p[ii],dt/2.) \
            for ii in range(len(q12))]
    return (q,p)
One N-body step: drift-kick-drift