Use an ArrayDeque instead of a Stack. Just learned all Stack methods are synchronized (because it extends Vector). Thread safety here is unnecessary overhead. (for now)