refactor
refactor
refactor
revise specs. specs pass