public function ReviewForm($request = null) {
		$registration = $this->getCurrentRegistration();
		$hasContactableAttendees = $registration->contactableAttendees()->count() > 0;

		$fields = FieldList::create();

		$required = array();

		// TODO: allow turning dropdown selection off

		if ($hasContactableAttendees) {
			$required[] = "RegistrantAttendeeID";
			$fields->push($registration->getMainContactField(true));
		}
		
		if (
			!$request instanceof SS_HTTPRequest ||
			!$hasContactableAttendees ||
			$request->postVar("RegistrantAttendeeID") === "0"
		) {
			// add registrant contact fields
			$fields->push($registration->getRegistrantContactFieldsGroup());
				if ($regFields = $registration->stat('registrant_fields')) {
				$required = array_merge($required, $regFields);
			}
		}

		$validator = new RequiredFields($required);
		
		$actions = new FieldList(
			new AnchorField("addticket",
				_t("EventRegisterController.ADDANOTHER", "Add Another Ticket"),
				$this->Link()
			),
			$nextaction = new FormAction(
				"submitreview", _t("EventRegisterController.NEXTSTEP", "Next Step")
			)
		);
		if($registration->getTotalOutstanding() > 0){
			$nextaction->setTitle(_t("EventRegisterController.MAKEPAYMENT", "Make Payment"));
		}

		$this->extend("updateReviewForm", $fields, $actions);
		$form = new Form($this, "ReviewForm", $fields, $actions, $validator);
		
		// Use server-side validation only
		$form->setAttribute("novalidate", "novalidate");

		if (!$form->hasSessionData()) {
			$form->loadDataFrom($registration);
		}

		return $form;
	}