This way we always have predictable behavior, especially from the performance point of view. Additionally, if some bottleneck is found in stack implementation it'll be easier for us to address.