add deriving y combinator