FIXME use read ByteBuffer