handle factors better