self defining and immediate functions
init-time branching, memoization
config object, function application