begin separating user-defined code from helper functions to be provided
by the framework.