normalize_row doesn't really need to dealw ith None and theres a slightly more elegant way to calculate row numbers