typeclasses intitial commit