Lifting, combinators and avoiding boilerplate