На данную тему существует множество произведений, однако я решил написать свое собственное. Приглашаю вас ознакомиться с результатом.