Implement generic_reader
Update value.hpp