Cleaned up the metaprogramming to allow many more calls