using StringInfo buffer