normalization self-recursive