abandond object|array, added init, finish, and options.returnValue