implemented until the monad bind