normalize data, test coverage could be more complete, but the processing aspect has coverage