This ensures that the data coming in is correct, but also wraps it in the nested types so operations can be staged against them.