complete spec refactor (pre-solution)