Все переписал нахрен. добавил тесты