mostly done factoring