added a "reuse stack" so that unused states get recycled... to avoid GC and spare us from throwing NEW all the time