mess around with some applicative functors