remove underscore dependency
add tests and reorganize demo