exercise 2
exercise 2 metaprograming
update
exercise 2