use JSONValue as input protocol