field functions should handle settig their own values