add Value as a generic type to pass around
code Value