Instead of just communicating with attributes and values, we can have a protocol with more complex objects where we can even pass down functions.