add metaprogramming util, rewrote overdrive