separate canonical and normal terms