Зачем создавать велосипед заново, когда есть готовое проверенное решение. На сегодня у нас есть готовые решения: