Ну да, довольно странная реализация "в лоб", но как это сделать еще?