Before I look at the code: Wrapping a model in a ViewModel instance makes it injectable and therefore shareable between different views in the same scope. For that reason alone, I tend to always favor it. With little to no performance overhead, and really no code overhead either, even if you're not using it, it's often a good solution. Now, you can actually create a ViewModel without it being backed by another model, if you just need the injectable properties of it.