added func memoize
added func hasValue
added operator promote
added operator demote