controller adaptation