с комментариями и тестами..)