simplify allocator, slightly better string passing