add chaining support
more tests and organized a little more
added npm ignore