fix recursive data type issue