I take a small example and expand it with some functional abstractions and underscore.js.
We end up writing a higher order function called reducer. Reducer takes a function and returns another function which combines the taken function with some other functions and awaits a set of arguments to act upon.
I show how you could change an application and after realizing that the same logic is getting reused, abstract it away into its own functions.