def METHOD_NAME(self,Number_of_Points=30,Measurements_per_Point=10,Background=0.):
    if self.Power_Meter is None:
        print('No Power Meter Defined!')
        raise Exception('Lacking Power Meter')
    def Measure():
        Power=[]
        while len(Power)<Measurements_per_Point:
            try:
                Power.append(self.Power_Meter.read)
            except:
                Dump=1
        return np.median(Power)
    def Rotate_Catch(Angle):
        Pos=None
        while Pos is None:
            try:
                Pos=self.Stage.Rotate_To(Angle)
                time.sleep(0.5)
                Pos=float(Pos[9:])
            except:
                Pos=None
        return Pos%360
    Angles=[]
    Powers=[]
    for i in [self.Angle_Range[0],self.Angle_Range[1]]:
        Pos=Rotate_Catch(i)
        Angles.append(Pos)
        Powers.append(Measure())
    while len(Powers)<Number_of_Points:
        Diff=[]
        n=1
        while n<len(Powers):
            Diff.append(Powers[n-1]-Powers[n])
            n+=1
        print('Points:'+str(len(Powers))+'. Average Power Seperation: '+str(round(np.mean(Diff)*1000000,2))+'uW')
        Next=np.argmax(Diff)
      #print Next
        Next_Angle=0.5*(Angles[Next]+Angles[Next+1])
        Pos=Rotate_Catch(Next_Angle)
        Angles=Angles[:Next+1]+[Pos]+Angles[Next+1:]
        Powers=Powers[:Next+1]+[Measure()]+Powers[Next+1:]
    self.Return_Home()
    self.Power_Curve=np.array([Angles,1000.*(np.array(Powers)-Background)])