Сделал пока по-своему. Есть там ряд моментов, которые надо будет учесть, так что в дальнейшем переделаю. Но пока и так лучше, чем было.