added traverse