add Array.observe() support
add hook function