add `on` and `emit` feature.
add args type handle.
add args type handle.
add test
add test.