The design of the Dreams system is such that both a message and a dream occupy a contiguous region of memory. This makes it possible to perform I/O with both messages and objects.