Implement candidate caching