set value takes object as parameter
added GetValue method
update throwing when values have differenct types
renamed method to be clearer
added immutable collections reference
return values as immutable list