finish spec refactor