add more array support, start to change some handlers