option monad impl. adding monadic laws