diff --git a/quad/sw/modular_quad_pid/src/control_algorithm.c b/quad/sw/modular_quad_pid/src/control_algorithm.c
index ba6a8733b2589b7fe044188b505e1279d750798f..f02329479ad2b1f8f51b142c167af5246aab2503 100644
--- a/quad/sw/modular_quad_pid/src/control_algorithm.c
+++ b/quad/sw/modular_quad_pid/src/control_algorithm.c
@@ -23,15 +23,20 @@ void connect_autonomous(parameter_t* ps) {
 	graph_set_source(graph, ps->pitch_pid, PID_SETPOINT, ps->clamp_pitch, PID_CORRECTION);
 	graph_set_source(graph, ps->roll_pid, PID_SETPOINT, ps->clamp_roll, PID_CORRECTION);
 	graph_set_source(graph, ps->mixer, MIXER_THROTTLE, ps->throttle_trim_add, ADD_SUM);
-	graph_set_source(graph, ps->yaw_r_pid, PID_SETPOINT, ps->yaw_pid, PID_CORRECTION);
+	//graph_set_source(graph, ps->yaw_r_pid, PID_SETPOINT, ps->yaw_pid, PID_CORRECTION);
 }
 
 void connect_manual(parameter_t* ps) {
 	struct computation_graph* graph = ps->graph;
+	/*
 	graph_set_source(graph, ps->pitch_pid, PID_SETPOINT, ps->rc_pitch, CONST_VAL);
 	graph_set_source(graph, ps->roll_pid, PID_SETPOINT, ps->rc_roll, CONST_VAL);
 	graph_set_source(graph, ps->mixer, MIXER_THROTTLE, ps->rc_throttle, CONST_VAL);
 	graph_set_source(graph, ps->yaw_r_pid, PID_SETPOINT, ps->rc_yaw, CONST_VAL);
+	*/
+	connect_autonomous(ps);
+	graph_set_source(graph, ps->yaw_r_pid, PID_SETPOINT, ps->rc_yaw, CONST_VAL);
+	graph_set_source(graph, ps->mixer, MIXER_THROTTLE, ps->rc_throttle, CONST_VAL);
 }
 
 int control_algorithm_init(parameter_t * ps)
@@ -216,8 +221,12 @@ int control_algorithm_init(parameter_t * ps)
 	// reset flight_mode to MANUAL right away if the flap switch is in manual position
 	// to engage AUTO mode the code waits for a new packet after the flap is switched to auto
 	// before actually engaging AUTO mode
-	if(cur_fm_switch == MANUAL_FLIGHT_MODE)
+	if(cur_fm_switch == MANUAL_FLIGHT_MODE) {
+		if (user_defined_struct->flight_mode == MANUAL_FLIGHT_MODE) {
+			connect_manual(parameter_struct);
+		}
 		user_defined_struct->flight_mode = MANUAL_FLIGHT_MODE;
+	}
 
 	// flap switch was just toggled to auto flight mode
 	if((last_fm_switch != cur_fm_switch) && (cur_fm_switch == AUTO_FLIGHT_MODE))
@@ -251,6 +260,7 @@ int control_algorithm_init(parameter_t * ps)
 		// finally engage the AUTO_FLIGHT_MODE
 		// this ensures that we've gotten a new update packet right after the switch was set to auto mode
 		user_defined_struct->flight_mode = AUTO_FLIGHT_MODE;
+		connect_autonomous(parameter_struct);
 	}
 
 	//PIDS///////////////////////////////////////////////////////////////////////
@@ -287,9 +297,9 @@ int control_algorithm_init(parameter_t * ps)
 	//memcpy(raw_actuator_struct->controller_corrected_motor_commands, user_input_struct->rc_commands, sizeof(int) * 6);
 
 	// don't use the PID corrections if the throttle is less than about 10% of its range
-	if((user_input_struct->rc_commands[THROTTLE] >
-	118000) || (user_defined_struct->flight_mode == AUTO_FLIGHT_MODE))
-	{
+	//if((user_input_struct->rc_commands[THROTTLE] >
+	//118000) || (user_defined_struct->flight_mode == AUTO_FLIGHT_MODE))
+	//{
 			//THROTTLE
 			actuator_struct->pwms[0] = graph_get_output(graph, parameter_struct->mixer, MIXER_PWM0);
 
@@ -298,14 +308,14 @@ int control_algorithm_init(parameter_t * ps)
 			actuator_struct->pwms[2] = graph_get_output(graph, parameter_struct->mixer, MIXER_PWM2);
 
 			actuator_struct->pwms[3] = graph_get_output(graph, parameter_struct->mixer, MIXER_PWM3);
-	}
-	else
+	//}
+	/*else
 	{
 		actuator_struct->pwms[0] = user_input_struct->rc_commands[THROTTLE];
 		actuator_struct->pwms[1] = user_input_struct->rc_commands[THROTTLE];
 		actuator_struct->pwms[2] = user_input_struct->rc_commands[THROTTLE];
 		actuator_struct->pwms[3] = user_input_struct->rc_commands[THROTTLE];
-	}
+	}*/
 
 	//logging
 	// here we are not actually duplicating the logging from the PID computation