Add stack of previous values to converter
produce more readable error messages
refactor to hide structs behind an interface
Merge pull request #2765 from lavalamp/conv

conversion refactoring