docs: def Extract_Checkpoints(self):
  		'''
  			Extract the checkpoints and store in self.tracking_data
  		'''
  
  		# Make sure page is available
  		if self.page is None:
  			raise Exception("The HTML data was not fetched due to some reasons")
  
  		soup = BeautifulSoup(self.page,'html.parser')
  
  		if 'Delivery information not found' in self.page:
  			raise ValueError('The Tracking number is invalid/Tracking number is over 45 days old.')
  
  		# Assign the current status of the shipment
  
  		if 'Delivered on' in self.page:
  			self.status = 'C'
  		else:											 # The shipment is in Transit
  			self.status = 'T'						
  
  		# Checkpoints extraction begins here 
  		
  		table = soup.findAll('table',{'cellpadding':'1','cellspacing':'1','border':'1','align':'center','style':"width:800px;border-color:#034291;"})[1]
  		rows = table.findAll('tr')[1:]
  
  		for row in rows:
  
  			'''
  				Each row will have 3 columns: Date--Location--Status
  			'''
  			row_cells = row.findAll('td')
  			date = row_cells[0].string.strip()
  			date = datetime.strptime(date,"%A, %B %d, %Y")
  			location = row_cells[1].find('a').string.strip()
  			if location is '':		# ignore the days which are holidays
  				continue
  			status = row_cells[2].text.strip()
  			
  			self.tracking_data.append({'status':status,'date':date,'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'])