WIP: applicative functor