add json output support