refactor CBVs to use get_context_data