Users create an object which encapsulates the stencil.
Knowing spatial extent of the stencil helps with communication patterns. Simple boundary conditions can be applied, such as periodic BCs, and zero-padding 5. Solves the Quinlan problem 8. Don't have to implement array expression versions of all possible scalar operators. Users can do arbitrarily complicated things inside a stencil, including calling their own functions, iterating, solving small linear systems, etc.