refactor out Value class; start UnionClient