Now properly handles recursive data extraction