pass most specs
refactor pass all specs