let us use GHC Generics to send/receive tangent spaces