factors. first implementation to review