concat now takes a destination buffer, added some comments