create separate module for the error formatting wrapper
heavily refactor the typename parser to remove almost all trys,
convert to applicative only, and left factor nicely
other refactoring to use more idiomatic parsing and to convert to
applicative only