beginnings of candidate API cleanup