Experimenting with metaprogramming