docs: def Extract_Checkpoints(self):
  		'''
  			Extract the checkpoints and store in self.tracking_data
  		'''
  		soup = BeautifulSoup(self.page,'xml')
  
  		if soup.find('result').string.strip() == 'failed':
  			raise ValueError('The Tracking number is invalid.')
  
  		status = soup.find('DOCKET_STATUS').string.strip()
  
  		if status == 'Delivered':
  			self.status = 'C'
  		elif status == 'Rebooked':
  			self.status = 'R'
  		else:
  			self.status = 'T'
  
  		# Checkpoints extraction begins here
  		rows = soup.findAll('ROW')
  
  		for row in rows:
  			'''
  				Each row has four columns:
  					date --- time --- location --- status
  				Merge #1 and #2
  				Append the 3 to self.tracking_data
  			'''
  			date = row.find('INTRANSIT_DATE').string.strip()
  			time = row.find('INTRANSIT_TIME').string.strip()
  			try:
  				location = row.find('INTRANSIT_LOCATION').string.strip()
  			except AttributeError:
  				location = ''
  			status = row.find('INTRANSIT_STATUS').string.strip()
  			date_time = datetime.strptime(' '.join([date,time]),"%d-%b-%Y %H:%M")
  
  			self.tracking_data.append({'status':status,'date':date_time,'location':location})
  
  		# Sort the checkpoints based on Date and Time --- this is important
  		self.tracking_data = sorted(self.tracking_data, key=lambda k: k['date'])