Type alias
add type class and instances