See Functional Pattern.