I vote for using `Lazy<>` internally but expose `Funct<>` to outside.