Перерблено з використанням мульти поточності.