fewer object allocations