Немного почистил, провел маленький CodeReview