beginnings of type class fuckery