Very large refactoring, renamed FactorValue into Factor, from now on please use factorValue ONLY to indicate the String value of a factor, not the combination of a type and a factor.