Free monad.