do not know why doing metaprogramming for getting the name