First cut at spec refactor