more typeclasses and sh1t