refactor pass all specs