update PageModel to use generics