use ArrayList over the synchronized Stack, as it's 3x faster