I have to let this sink in a bit before I make up my mind, but - in general - I do not think it is a good idea to try to do everything with a single class/function. Better to chop is up in small manageable pieces that can be reused elsewhere. > I've also attached a code snippet from GenePHP 2.0's IO > class, in which the "parser class" you were mentioning > earlier are its methods. The general idea here is that > That will break the code (it is a class, not a function). It could be a subclass though. > people only use ONE AND ONLY ONE class to read/write > data from WHATEVER SOURCE (console, variable, file, SQL > DB, etc.) to WHATEVER DESTINATION. I would keep the read and write routines separate. What use is it to have to pass a 'r' or 'w' as an argument, if you could just name the function/class accordingly? Or, I'd prefer: IOseq_read($whatever) // this is a better name than 'parse' and IOseq_write ($whatever) returns // over: IOseq($whatever,'w') and IOseq($whatever,'r') The reason is that the objects returned when doing writing or reading are going to be quite different (an IO_seq_read and IO_seq_write object will not share much in functionality). If they need to be merged it could be: IOseq->read($whatever) and IOseq->write($whatever) Best, Nico