lots of little changes
recursively build up errors too
simplify fallback logic and DRY