completed 23.. monads are hard..