Meta programming pt 1