add class and instances for Applicative