use an array instead of an object to maintain order