Free monad experiment.