refactor a bit, ensuring that normalization occurs in one place