Implemented 3 versions of the read method.