Exercise 8-7 (Gen.union)
Added new implementation of Prop