add smart sort