add biapplicative typeclass