added data type, type class and an instance