refactored challenges using new abstract Challenge class