don't use unneccessary meta-programming