In this paper we present a paradigm to express streams and its implementation. Streams are a convenient mechanism to communicate multimedia data, for example video or audio, between systems. The paradigm is based on channels, as found in CSP and Occam, but with two important modifications. First, our Flexible Channels can be connected dynamically, and passed around as first class objects. Second, although synchronous in nature, the compiler and run time support will implement communication over channels in a less synchronised mode, when program semantics allow for this. With this technique, a programmer can use a high level language to communicate tiny messages (audio samples) at a high data rate. We have initially used streaming mode to optimise inter node communications, but we hope to use optimisations based on the same techniques to reduce overheads of communications within a node.