refactoring + normalization