PERF: avoid string allocations