use range to generate an array
use flatten to make nested arrays easy to work with
chain() ... .value() to use multiple higher order functions ERMAHGERD wat
call a method on the derived object
call a method on the base object AND set constructor parameters on the base object