meta-programing module