Finished part 4, using generic views.