AST: deriving functor, so that we can easily map the meta-data