add class and instances for Monad