updated toArray function