Помогие упростить вырашение? Смотрите вложении.
Решение "ужасного" примера смотри во вложении :D
удачи)