basic candidate functionality done