A slight change in the architecture allowed the removal of one generic parameter while maintaining the overall generality of the approach. The benefit is that using the package is much easier. Furthermore, the recursive decent of the parser was conceptually different before for a choice and a sequence element, resulting in a hidden bug. By improving the conceptual integrity of how the recursive steps are performed, the bug could be fixed. In addition, the code is much more readable now.