Cleaner code, several beforeNormalization checks, throws InvalidArgumentException when both old and new keys specified