support  structued output in JSON, and a new output framework.