Reverted plumbing for visitor mode to try using typeclasses instead of GADTs.