refactor with factory finished 405