updated Factor class