переписал всё что можно :)