refactored
add normalize