remove dependency on string metatable
refactor with tconcat