add Challenge class and bunch of related stuff