Посты закончены, разве что дописать пару тестов, но все работает.