Properly dispatch between different challenge types.