Немного поборолся с говнокодом :)