use an array instead of list - easier to reason about