порефакторив трохи код. додав більше коментарів