add VariableFactory