add spec
add bin
break out into files