strategy with functions
variations on the function-based strategy pattern