added edge reduction