вот это почти копипаста, лучше переделать без неё