requires Nette 2