resolve #3 #4
Написано пока ужасно, но оно вроде как работает