Куча мелки переределок, вроде все работает =)