Adapted from Freeman, 2014, Pro ASP.NET MVC 4