<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def add_shapes(self,**kwargs):
 		""" 		Add a shape to the QuantFigure. 		kwargs : 			hline : int, list or dict 				Draws a horizontal line at the 				indicated y position(s) 				Extra parameters can be passed in 				the form of a dictionary (see shapes) 			vline : int, list or dict 				Draws a vertical line at the 				indicated x position(s) 				Extra parameters can be passed in 				the form of a dictionary (see shapes) 			hspan : (y0,y1) 				Draws a horizontal rectangle at the 				indicated (y0,y1) positions. 				Extra parameters can be passed in 				the form of a dictionary (see shapes) 			vspan : (x0,x1) 				Draws a vertical rectangle at the 				indicated (x0,x1) positions. 				Extra parameters can be passed in 				the form of a dictionary (see shapes) 			shapes : dict or list(dict) 				List of dictionaries with the 				specifications of a given shape. 				See help(cufflinks.tools.get_shape) 				for more information 			 		"""

		kwargs=utils.check_kwargs(kwargs,get_shapes_kwargs(),{},clean_origin=True)
		for k,v in list(kwargs.items()):
			if k in self.layout['shapes']:
				if utils.is_list(v):
					self.layout['shapes'][k].extend(v)	
				else:
					self.layout['shapes'][k].append(v)
			else:
				self.layout['shapes'][k]=utils.make_list(v)