TODO definition typeclass done