Either monad, i think. gotta get some tests going