Еще доделал, стало 50 строк и почти ничего лишнего.