refactor value/function array
refactor lazy value/function