meta-programming fixed