Allow for any proxy type instead of just For
Added a version using GHC.Generic
Converted the examples to use GHC.Generic