Ревью, несколько переписал/дописал.