* execute individual stages that yields a final value
* add readability to complex sequence of operations by providing a fluent builder as an interface
* improve testability of code since stages will most likely be doing a single thing, complying to the [Single Responsibility Principle (SRP)](https://java-design-patterns.com/principles/#single-responsibility-principle)
## Typical Use Case
* implement stages and execute them in an ordered manner