Очень много изменения и не спрашивайте меня каких :)