edge insertion implemented