the way to go for defining complex models, such as multi-output models, directed acyclic graphs, or models with shared layers.