improve a bit
add some handler
add assign prototype
a bit refactoring