CS242 typeclasses project