further speedups