update test
use result instead of laissez
docs
use a generalized implementation
add deep.js
deps