moving reading logic in Reader and not Values