horray! using meta programming for rotate