rewrite the lib, move the methods into a object
could add a explicit depend value for a memoize function
add new usage to readme
modify the spec a bit