part 4 - use generic views