Now supports custom challenge. Renamed some objects.