Introduced new wrapper classes to handle the input/out, so it is easy to implement new input/out sources.