a bit reduction of allocs, but still needed for loops (cant determine loop count fast / reliable for now in advance)