## A workflow computational model

Monads are very useful for manipulating and chaining data transformations using implicit configurations or explicit models. However, they are restricted to a single morphism `T => U`

type. More complex and flexible workflows require weaving transformations of different types using a generic factory pattern.

Traditional factory patterns rely on a combination of composition and inheritance and do not provide developers with the same level of flexibility as stackable traits.

In this section, we introduce you to the concept of modeling using mixins and a variant of the cake pattern to provide a workflow with three degrees of configurability.

### Supporting mathematical abstractions

Stackable traits enable developers to follow a strict mathematical formalism while implementing a model in Scala. Scientists use a universally accepted template to solve a mathematical problem:

Declare the variables relevant to the problem.

Define a model (equations, algorithms, formulas, and...