class PollControl extends Control
{
    public function __construct(array $info)
    {
        $this->info = $info;
    }
}
interface IPollControlFactory
{
    /**
     * @param array $info
     * @return PollControl
     */
    function create(array $info);
}

class PollPresenter extends Presenter
{
    /** @var PollFactory @inject */
    public $pollFactory;

    private $pollInfos = [];

    public function actionDefault()
    {
        $this->pollInfos = $this->pollRepository->getAllPaired(); // array [id => info]
    }

    public function renderDefault()
    {
        $this->template->polls = $this->pollInfos;
    }

    protected function createComponentPoll()
    {
        return new Multiplier(function($id) {
            $pollInfo = $this->pollInfos[$id];

            return $this->pollFactory->create($pollInfo);
        });
    }
}