toJSON now works to all levels.