simplify array wrapping logic, use standard adaptor API
whole load of IE7 fixes. aargh!