write method prepareCandidates
update method selectCandidate