def excute(D):
    #step 1:
    destPoint = array([D[0],D[1]])
    currentPosition = array([[0],[0],[0]])

    # go obs and get current position
    #destPoint = dest();
    #currentPosition = obs();
    currentPosition = mover.getLocation()
    while not mover.getSet():
        time.sleep(0.05)
        currentPosition = mover.getLocation()
        
    currentPosition = (0,0,0)
    dx = destPoint[0] - currentPosition[0]
    dy = destpoint[1] - currentPosition[1]

    angle = math.atan2(dy,dx) - currentPosition[2]
    if angle > math.pi:                     #probabbly buggy have to test this code might have angle 
        angle = math.pi - angle
    turning(angle)

    dist = sqrt(pow((destpoint[1]-currentPosition[1]),2) + pow(destpoint[0]-currentPosition[0]),2)
    dist = dist/3     
    goal = array([[currentPosition[0] + dist*cos(currentPosition[2])],[currentPosition[0] + dist*sin(currentPosition[2])],[0]])
    driving(dist);

    #step 2:
	currentPosition = mover.getLocation()
    dx = destPoint[0] - currentPosition[0]
    dy = destpoint[1] - currentPosition[1]

    angle = math.atan2(dy,dx) - currentPosition[2]
    if angle > math.pi:                     #probabbly buggy have to test this code might have angle 
        angle = math.pi - angle
    turning(angle)

    dist = sqrt(pow((destpoint[1]-currentPosition[1]),2) + pow(destpoint[0]-currentPosition[0]),2)
    dist = dist/3     
    goal = array([[currentPosition[0] + dist*cos(currentPosition[2])],[currentPosition[0] + dist*sin(currentPosition[2])],[0]])
    driving(dist);

    #step 2:
	currentPosition = mover.getLocation()
    while not mover.getSet():
        time.sleep(0.05)
        currentPosition = mover.getLocation()
        
    dx = destPoint[0] - currentPosition[0]
    dy = destpoint[1] - currentPosition[1]

    angle = math.atan2(dy,dx) - currentPosition[2]
    if angle > math.pi:                     #probabbly buggy have to test this code might have angle 
        angle = math.pi - angle
    turning(angle)

    dist = sqrt(pow((destpoint[1]-currentPosition[1]),2) + pow(destpoint[0]-currentPosition[0]),2)
    dist = dist/2
    goal = array([[currentPosition[0] + dist*cos(currentPosition[2])],[currentPosition[0] + dist*sin(currentPosition[2])],[0]])
    driving(dist);c