add tests
add tests of generics
use node.js