refactor
add specs