commonjs support
add tests
add tests