Abstracting through typeclasses.