implemented read and return