optional json cacheing