потенциально много вызовов функции, как бы закэшировать