Это коммент скорее для себя. Надо подумать, как это можно ещё реализовать, выглядит как-то очень уж неоптимально