- changed comm to take an external buffer so the size is determined by
application