i love metaprogramming, polymorphic specs passing