protocols functorsand type classes.
post functional world.