Я давно подобное реализовывал на одном проекте, но вот сейчас опять коснулось, и пришлось ресерчинг с нуля опять делать. Решил сразу заметку зафиксировать)