made piping immutable, better transaction docs, new IOStream.register method