 We've covered all of the anatomy of context, how to create, consume, and provide it. Now I'd like to talk about the values that you can put on context. For that, I am creating a context here. It's called context values. I'm using the context values consumer to take the value and return a big bold H1, spitting that value out. Really simple here. Now you've already seen this working with strings, but we can also use numbers. We can also use a Boolean, though in here we'll have to change things up a little bit. We can use any simple type that we want, but we can also use complex types like arrays. Now React has default support for arrays as children, but we can call map on that and do whatever we please. We can also use the complex types of objects. So let's say we had a person object with a name and an occupation, and grab the name and the occupation. Now you might think that's it, but it's not. We can go even further and provide really complex types using react things. So if we want to, we could provide a react element and because we're wrapping this in an H1, we can get rid of this H1 and just spit out that value. That's pretty neat, but it's not very dynamic. Can we provide components? Yep. We can do function components. We can do that in line by taking props as an argument and returning our react element, then interpolating whichever props we want. Where we use it, we have to call it like a react element, which means that we need to capitalize this value. And this is not limited to function components. We can use class components as well. And when we do that, we need to change props to this props. I've been doing this in line for illustration, but you can do it however you like. If you prefer to pass in a component that you define elsewhere, that's also fine. So we can pass in greeting here and give that a name. Bottom line, you can use any JavaScript expression you want on context.