removed Value.Function for default Value constructor
moved some code around
named arguments