refactored edge tracing