I've always really liked the design pattern used by the C++ iostreams, whereby you take an object and call methods (or operators) on it which do what they need to do and then return a reference to the ...