Meta-programming Abstract