major refactor of the I/O sources and added a command to copy data from an input source to an output source