Type class

See Haskell Type class