added edge traversing