update classes
move exports to top
use middleware style of extension
test init middleware
test init time event binding
add component