BSDF now uses derived functor instance. Redefined monoid instance to use applicative functions