use ByteBuffer instead of byte[] in TaskMessage