Here are some ideas to make working with pipes easier.
This one combines the receive and the match with some sugar to handle moving the next state out of the message enum. This also hides the implementation of the message format from the programmer.
fn client_follow(+bank: bank::client::login) {
import bank::*;
let bank = client::login(bank, ~"theincredibleholk", ~"1234");
let bank = switch(bank, follow! {