add return value format
add event & hooks support