add spec
add default
Remove closure argument
add interface