refactoring
add specs