recursive serialization now baked into json() method