Now using pools to avoid extra allocations