reimplement json descriptor