Буду выкладывать отдельными ответами в этом посте