add smart track function