like -5, but uses a monad transformer to handle leftovers.