было бы еще неплохо этот метод сопроводить комментариями, что в нем происходит вообще