add a Method Chaining pattern
add a Strategy pattern
add a Composite pattern