improved arg handling
split out the Message class
tweaked/added Drain.java and Spout.java from Robbie