diff --git a/src/lib/FlightTasks/FlightTasks.cpp b/src/lib/FlightTasks/FlightTasks.cpp
index f482aa929b607907bd1b29667f131a3d599f6d6d..159471ec41b6991d1685326046bde39fec6dd83e 100644
--- a/src/lib/FlightTasks/FlightTasks.cpp
+++ b/src/lib/FlightTasks/FlightTasks.cpp
@@ -45,31 +45,31 @@ int FlightTasks::switchTask(FlightTaskIndex new_task_index)
 		return 0;
 
 	case FlightTaskIndex::Stabilized:
-		_current_task = new (&_task_union.stabilized) FlightTaskManualStabilized(this, "MANSTAB");
+		_current_task = new (&_task_union.stabilized) FlightTaskManualStabilized();
 		break;
 
 	case FlightTaskIndex::Altitude:
-		_current_task = new (&_task_union.altitude) FlightTaskManualAltitude(this, "MANALT");
+		_current_task = new (&_task_union.altitude) FlightTaskManualAltitude();
 		break;
 
 	case FlightTaskIndex::AltitudeSmooth:
-		_current_task = new (&_task_union.altitude_smooth) FlightTaskManualAltitudeSmooth(this, "MANALTSM");
+		_current_task = new (&_task_union.altitude_smooth) FlightTaskManualAltitudeSmooth();
 		break;
 
 	case FlightTaskIndex::Position:
-		_current_task = new (&_task_union.position) FlightTaskManualPosition(this, "MANPOS");
+		_current_task = new (&_task_union.position) FlightTaskManualPosition();
 		break;
 
 	case FlightTaskIndex::PositionSmooth:
-		_current_task = new (&_task_union.position_smooth) FlightTaskManualPositionSmooth(this, "MANPOSSM");
+		_current_task = new (&_task_union.position_smooth) FlightTaskManualPositionSmooth();
 		break;
 
 	case FlightTaskIndex::Orbit:
-		_current_task = new (&_task_union.orbit) FlightTaskOrbit(this, "ORB");
+		_current_task = new (&_task_union.orbit) FlightTaskOrbit();
 		break;
 
 	case FlightTaskIndex::Sport:
-		_current_task = new (&_task_union.sport) FlightTaskSport(this, "SPO");
+		_current_task = new (&_task_union.sport) FlightTaskSport();
 		break;
 
 	default:
@@ -111,6 +111,13 @@ int FlightTasks::switchTask(int new_task_index)
 	return -1;
 }
 
+void FlightTasks::handleParameterUpdate()
+{
+	if (_current_task) {
+		_current_task->handleParameterUpdate();
+	}
+}
+
 void FlightTasks::_updateCommand()
 {
 //	TODO: port flight task mavlink command to have support for this functionality
diff --git a/src/lib/FlightTasks/FlightTasks.hpp b/src/lib/FlightTasks/FlightTasks.hpp
index fe0a650ddde3385b809e7562bfe77f4b0a1c32e7..e596fc6009b21e32be3d65394224eee0c1c4de99 100644
--- a/src/lib/FlightTasks/FlightTasks.hpp
+++ b/src/lib/FlightTasks/FlightTasks.hpp
@@ -67,12 +67,10 @@ enum class FlightTaskIndex : int {
 	Count // number of tasks
 };
 
-class FlightTasks : control::SuperBlock
+class FlightTasks
 {
 public:
-	FlightTasks() :
-		SuperBlock(nullptr, "TSK")
-	{}
+	FlightTasks() = default;
 
 	~FlightTasks()
 	{
@@ -119,6 +117,11 @@ public:
 	 */
 	bool isAnyTaskActive() const { return _current_task; }
 
+	/**
+	 * Call this whenever a parameter update notification is received (parameter_update uORB message)
+	 */
+	void handleParameterUpdate();
+
 private:
 
 	/**
diff --git a/src/lib/FlightTasks/tasks/FlightTask.hpp b/src/lib/FlightTasks/tasks/FlightTask.hpp
index bf2da20fb9d3eb0b8dc3022a26cdffb70f1accfb..23d5c463083cdeca9243622c83b93527f99bc307 100644
--- a/src/lib/FlightTasks/tasks/FlightTask.hpp
+++ b/src/lib/FlightTasks/tasks/FlightTask.hpp
@@ -41,7 +41,7 @@
 
 #pragma once
 
-#include <controllib/blocks.hpp>
+#include <px4_module_params.h>
 #include <drivers/drv_hrt.h>
 #include <matrix/matrix/math.hpp>
 #include <uORB/topics/vehicle_local_position.h>
@@ -51,11 +51,11 @@
 #include "../SubscriptionArray.hpp"
 
 
-class FlightTask : public control::Block
+class FlightTask : public ModuleParams
 {
 public:
-	FlightTask(control::SuperBlock *parent, const char *name) :
-		Block(parent, name)
+	FlightTask() :
+		ModuleParams(nullptr)
 	{ _resetSetpoints(); }
 
 	virtual ~FlightTask() = default;
@@ -98,6 +98,14 @@ public:
 
 	static const vehicle_local_position_setpoint_s empty_setpoint;
 
+	/**
+	 * Call this whenever a parameter update notification is received (parameter_update uORB message)
+	 */
+	void handleParameterUpdate()
+	{
+		updateParams();
+	}
+
 protected:
 	/* Time abstraction */
 	static constexpr uint64_t _timeout = 500000; /**< maximal time in us before a loop or data times out */
diff --git a/src/lib/FlightTasks/tasks/FlightTaskManual.cpp b/src/lib/FlightTasks/tasks/FlightTaskManual.cpp
index 813a3b8b298ede713c60db531392fb2f0d89cd48..a4e36a870b82f11e092a3fe953feffa8a861d134 100644
--- a/src/lib/FlightTasks/tasks/FlightTaskManual.cpp
+++ b/src/lib/FlightTasks/tasks/FlightTaskManual.cpp
@@ -40,14 +40,6 @@
 
 using namespace matrix;
 
-FlightTaskManual::FlightTaskManual(control::SuperBlock *parent, const char *name) :
-	FlightTask(parent, name),
-	_stick_dz(parent, "MPC_HOLD_DZ", false),
-	_xy_vel_man_expo(parent, "MPC_XY_MAN_EXPO", false),
-	_z_vel_man_expo(parent, "MPC_Z_MAN_EXPO", false)
-{
-}
-
 bool FlightTaskManual::initializeSubscriptions(SubscriptionArray &subscription_array)
 {
 	if (!FlightTask::initializeSubscriptions(subscription_array)) {
diff --git a/src/lib/FlightTasks/tasks/FlightTaskManual.hpp b/src/lib/FlightTasks/tasks/FlightTaskManual.hpp
index fc3307a55f6f87fdc4038bbfb9a1c24f1b58b368..7347160b0c40f3c01d03799017de16deb5cebf7a 100644
--- a/src/lib/FlightTasks/tasks/FlightTaskManual.hpp
+++ b/src/lib/FlightTasks/tasks/FlightTaskManual.hpp
@@ -46,7 +46,7 @@
 class FlightTaskManual : public FlightTask
 {
 public:
-	FlightTaskManual(control::SuperBlock *parent, const char *name);
+	FlightTaskManual() = default;
 
 	virtual ~FlightTaskManual() = default;
 
@@ -61,14 +61,19 @@ protected:
 	bool _sticks_data_required = true; /**< let inherited task-class define if it depends on stick data */
 	matrix::Vector<float, 4> _sticks; /**< unmodified manual stick inputs */
 	matrix::Vector3f _sticks_expo; /**< modified manual sticks using expo function*/
-	control::BlockParamFloat _stick_dz; /**< 0-deadzone around the center for the sticks */
 
+	float stickDeadzone() const { return _stick_dz.get(); }
 private:
 
-	uORB::Subscription<manual_control_setpoint_s> *_sub_manual_control_setpoint{nullptr};
+	bool _evaluateSticks(); /**< checks and sets stick inputs */
 
-	control::BlockParamFloat _xy_vel_man_expo; /**< ratio of exponential curve for stick input in xy direction */
-	control::BlockParamFloat _z_vel_man_expo; /**< ratio of exponential curve for stick input in z direction */
+	uORB::Subscription<manual_control_setpoint_s> *_sub_manual_control_setpoint{nullptr};
 
-	bool _evaluateSticks(); /**< checks and sets stick inputs */
+	DEFINE_PARAMETERS_CUSTOM_PARENT(FlightTask,
+					(ParamFloat<px4::params::MPC_HOLD_DZ>) _stick_dz, /**< 0-deadzone around the center for the sticks */
+					(ParamFloat<px4::params::MPC_XY_MAN_EXPO>)
+					_xy_vel_man_expo, /**< ratio of exponential curve for stick input in xy direction */
+					(ParamFloat<px4::params::MPC_Z_MAN_EXPO>)
+					_z_vel_man_expo /**< ratio of exponential curve for stick input in z direction */
+				       )
 };
diff --git a/src/lib/FlightTasks/tasks/FlightTaskManualAltitude.cpp b/src/lib/FlightTasks/tasks/FlightTaskManualAltitude.cpp
index 1a75545067aa40b38f34349d5406796e557d92d3..855f5e2608fe09dbe3dab529cb3b17d6cdf703ce 100644
--- a/src/lib/FlightTasks/tasks/FlightTaskManualAltitude.cpp
+++ b/src/lib/FlightTasks/tasks/FlightTaskManualAltitude.cpp
@@ -40,14 +40,6 @@
 
 using namespace matrix;
 
-FlightTaskManualAltitude::FlightTaskManualAltitude(control::SuperBlock *parent, const char *name) :
-	FlightTaskManualStabilized(parent, name),
-	_vel_max_down(parent, "MPC_Z_VEL_MAX_DN", false),
-	_vel_max_up(parent, "MPC_Z_VEL_MAX_UP", false),
-	_vel_hold_thr_z(parent, "MPC_HOLD_MAX_Z", false)
-
-{}
-
 void FlightTaskManualAltitude::_scaleSticks()
 {
 	/* Reuse same scaling as for stabilized */
diff --git a/src/lib/FlightTasks/tasks/FlightTaskManualAltitude.hpp b/src/lib/FlightTasks/tasks/FlightTaskManualAltitude.hpp
index 293003c3e4e25a1276ea94dd3a511814c0262cd6..3d21c4bb10e2e5e39b1019c417f16df277c4c58d 100644
--- a/src/lib/FlightTasks/tasks/FlightTaskManualAltitude.hpp
+++ b/src/lib/FlightTasks/tasks/FlightTaskManualAltitude.hpp
@@ -44,17 +44,20 @@
 class FlightTaskManualAltitude : public FlightTaskManualStabilized
 {
 public:
-	FlightTaskManualAltitude(control::SuperBlock *parent, const char *name);
+	FlightTaskManualAltitude() = default;
 
 	virtual ~FlightTaskManualAltitude() = default;
 
 protected:
-	control::BlockParamFloat _vel_max_down; /**< maximum speed allowed to go up */
-	control::BlockParamFloat _vel_max_up; /**< maximum speed allowed to go down */
-	control::BlockParamFloat _vel_hold_thr_z; /**< velocity threshold to switch back into vertical position hold */
-
 	void _updateAltitudeLock(); /**< checks for position lock */
 	void _updateSetpoints() override; /**< updates all setpoints */
 	void _scaleSticks() override; /**< scales sticks to velocity in z */
 
+	DEFINE_PARAMETERS_CUSTOM_PARENT(FlightTaskManualStabilized,
+					(ParamFloat<px4::params::MPC_Z_VEL_MAX_DN>) _vel_max_down, /**< maximum speed allowed to go up */
+					(ParamFloat<px4::params::MPC_Z_VEL_MAX_UP>) _vel_max_up, /**< maximum speed allowed to go down */
+					(ParamFloat<px4::params::MPC_HOLD_MAX_Z>)
+					_vel_hold_thr_z /**< velocity threshold to switch back into vertical position hold */
+				       )
+
 };
diff --git a/src/lib/FlightTasks/tasks/FlightTaskManualAltitudeSmooth.cpp b/src/lib/FlightTasks/tasks/FlightTaskManualAltitudeSmooth.cpp
index bb0c5485dee10cd15adb71b057256d16459675d9..91a488c4e71fe576bf4e3f4d49a21230958a63e4 100644
--- a/src/lib/FlightTasks/tasks/FlightTaskManualAltitudeSmooth.cpp
+++ b/src/lib/FlightTasks/tasks/FlightTaskManualAltitudeSmooth.cpp
@@ -39,9 +39,8 @@
 
 using namespace matrix;
 
-FlightTaskManualAltitudeSmooth::FlightTaskManualAltitudeSmooth(control::SuperBlock *parent, const char *name) :
-	FlightTaskManualAltitude(parent, name),
 	_smoothing(_velocity(2), _sticks(2))
+FlightTaskManualAltitudeSmooth::FlightTaskManualAltitudeSmooth() :
 {}
 
 void FlightTaskManualAltitudeSmooth::_updateSetpoints()
diff --git a/src/lib/FlightTasks/tasks/FlightTaskManualAltitudeSmooth.hpp b/src/lib/FlightTasks/tasks/FlightTaskManualAltitudeSmooth.hpp
index 628141615fdca84c27f3f2495fb88c20b04f56ea..ba22d08ceff975b21824889b4a96cea5fda300c4 100644
--- a/src/lib/FlightTasks/tasks/FlightTaskManualAltitudeSmooth.hpp
+++ b/src/lib/FlightTasks/tasks/FlightTaskManualAltitudeSmooth.hpp
@@ -44,7 +44,7 @@
 class FlightTaskManualAltitudeSmooth : public FlightTaskManualAltitude
 {
 public:
-	FlightTaskManualAltitudeSmooth(control::SuperBlock *parent, const char *name);
+	FlightTaskManualAltitudeSmooth();
 	virtual ~FlightTaskManualAltitudeSmooth() = default;
 
 protected:
diff --git a/src/lib/FlightTasks/tasks/FlightTaskManualPosition.cpp b/src/lib/FlightTasks/tasks/FlightTaskManualPosition.cpp
index d84050c8d5026b14f10add3df3c9025862556706..361adb23337c0c36b200ea90ad3957a0c1b1f50d 100644
--- a/src/lib/FlightTasks/tasks/FlightTaskManualPosition.cpp
+++ b/src/lib/FlightTasks/tasks/FlightTaskManualPosition.cpp
@@ -41,13 +41,6 @@
 
 using namespace matrix;
 
-FlightTaskManualPosition::FlightTaskManualPosition(control::SuperBlock *parent, const char *name) :
-	FlightTaskManualAltitude(parent, name),
-	_vel_xy_manual_max(parent, "MPC_VEL_MANUAL", false),
-	_acc_xy_max(parent, "MPC_ACC_HOR_MAX", false),
-	_vel_hold_thr_xy(parent,  "MPC_HOLD_MAX_XY", false)
-{}
-
 void FlightTaskManualPosition::_scaleSticks()
 {
 	/* Use same scaling as for FlightTaskManualAltitude */
diff --git a/src/lib/FlightTasks/tasks/FlightTaskManualPosition.hpp b/src/lib/FlightTasks/tasks/FlightTaskManualPosition.hpp
index 2277a48e7753c0b1f373bf39c667678c6628aeae..1a4e533b721625fe85110d810fa39d50a70ddf70 100644
--- a/src/lib/FlightTasks/tasks/FlightTaskManualPosition.hpp
+++ b/src/lib/FlightTasks/tasks/FlightTaskManualPosition.hpp
@@ -45,16 +45,22 @@
 class FlightTaskManualPosition : public FlightTaskManualAltitude
 {
 public:
-	FlightTaskManualPosition(control::SuperBlock *parent, const char *name);
+	FlightTaskManualPosition() = default;
 
 	virtual ~FlightTaskManualPosition() = default;
 
 protected:
-	control::BlockParamFloat _vel_xy_manual_max; /**< maximum speed allowed horizontally */
-	control::BlockParamFloat _acc_xy_max;/**< maximum acceleration horizontally. Only used to compute lock time */
-	control::BlockParamFloat _vel_hold_thr_xy; /**< velocity threshold to switch back into horizontal position hold */
-
 	void _updateXYlock(); /**< applies positon lock based on stick and velocity */
 	void _updateSetpoints() override;
 	void _scaleSticks() override;
+
+	DEFINE_PARAMETERS_CUSTOM_PARENT(FlightTaskManualAltitude,
+					(ParamFloat<px4::params::MPC_VEL_MANUAL>) _vel_xy_manual_max, /**< maximum speed allowed horizontally */
+					(ParamFloat<px4::params::MPC_ACC_HOR_MAX>)
+					_acc_xy_max, /**< maximum acceleration horizontally. Only used to compute lock time */
+					(ParamFloat<px4::params::MPC_HOLD_MAX_XY>)
+					_vel_hold_thr_xy /**< velocity threshold to switch back into horizontal position hold */
+				       )
+private:
+
 };
diff --git a/src/lib/FlightTasks/tasks/FlightTaskManualPositionSmooth.cpp b/src/lib/FlightTasks/tasks/FlightTaskManualPositionSmooth.cpp
index a8507911f5e5d659f8c3d176a8191d4894b7d06b..b4892c2d2e17e1c7acb4140a66816cc86eed5ef0 100644
--- a/src/lib/FlightTasks/tasks/FlightTaskManualPositionSmooth.cpp
+++ b/src/lib/FlightTasks/tasks/FlightTaskManualPositionSmooth.cpp
@@ -39,8 +39,7 @@
 
 using namespace matrix;
 
-FlightTaskManualPositionSmooth::FlightTaskManualPositionSmooth(control::SuperBlock *parent, const char *name) :
-	FlightTaskManualPosition(parent, name),
+FlightTaskManualPositionSmooth::FlightTaskManualPositionSmooth() :
 	_smoothingXY(matrix::Vector2f(&_velocity(0))),
 	_smoothingZ(_velocity(2), _sticks(2))
 {}
diff --git a/src/lib/FlightTasks/tasks/FlightTaskManualPositionSmooth.hpp b/src/lib/FlightTasks/tasks/FlightTaskManualPositionSmooth.hpp
index b8abc1f90b5a35de1fa4452be14230cabccc262d..a57c352d9f81d7a5b9311bd1f73a36887baec888 100644
--- a/src/lib/FlightTasks/tasks/FlightTaskManualPositionSmooth.hpp
+++ b/src/lib/FlightTasks/tasks/FlightTaskManualPositionSmooth.hpp
@@ -45,13 +45,15 @@
 class FlightTaskManualPositionSmooth : public FlightTaskManualPosition
 {
 public:
-	FlightTaskManualPositionSmooth(control::SuperBlock *parent, const char *name);
+	FlightTaskManualPositionSmooth();
 
 	virtual ~FlightTaskManualPositionSmooth() = default;
 
 protected:
 
 	virtual void _updateSetpoints() override;
+
+private:
 	ManualSmoothingXY _smoothingXY; /**< smoothing for velocity setpoints in xy */
 	ManualSmoothingZ _smoothingZ; /**< smoothing for velocity in z */
 };
diff --git a/src/lib/FlightTasks/tasks/FlightTaskManualStabilized.cpp b/src/lib/FlightTasks/tasks/FlightTaskManualStabilized.cpp
index 46d4fb5b3f0faa0f9c5d14c00d03f3073b99e57b..8d3ca33af4a4d3ad8cc4f4b11cc63cb9c13037a2 100644
--- a/src/lib/FlightTasks/tasks/FlightTaskManualStabilized.cpp
+++ b/src/lib/FlightTasks/tasks/FlightTaskManualStabilized.cpp
@@ -40,15 +40,6 @@
 
 using namespace matrix;
 
-FlightTaskManualStabilized::FlightTaskManualStabilized(control::SuperBlock *parent, const char *name) :
-	FlightTaskManual(parent, name),
-	_yaw_rate_scaling(parent, "MPC_MAN_Y_MAX", false),
-	_tilt_max_man(parent, "MPC_MAN_TILT_MAX", false),
-	_throttle_min(parent, "MPC_THR_MIN", false),
-	_throttle_max(parent, "MPC_THR_MAX", false),
-	_throttle_hover(parent, "MPC_THR_HOVER", false)
-{}
-
 bool FlightTaskManualStabilized::activate()
 {
 	_thrust_setpoint = matrix::Vector3f(0.0f, 0.0f, -_throttle_hover.get());
@@ -68,7 +59,7 @@ void FlightTaskManualStabilized::_updateHeadingSetpoints()
 	/* Yaw-lock depends on stick input. If not locked,
 	 * yaw_sp is set to NAN.
 	 * TODO: add yawspeed to get threshold.*/
-	const bool stick_yaw_zero = fabsf(_sticks(3)) <= _stick_dz.get();
+	const bool stick_yaw_zero = fabsf(_sticks(3)) <= stickDeadzone();
 
 	if (stick_yaw_zero && !PX4_ISFINITE(_yaw_setpoint)) {
 		_yaw_setpoint = _yaw;
diff --git a/src/lib/FlightTasks/tasks/FlightTaskManualStabilized.hpp b/src/lib/FlightTasks/tasks/FlightTaskManualStabilized.hpp
index 0f6aa1698607a7cb9de014d331c0fd18cca4006d..df85abd23296e32b9486e0585b94da93d07a7605 100644
--- a/src/lib/FlightTasks/tasks/FlightTaskManualStabilized.hpp
+++ b/src/lib/FlightTasks/tasks/FlightTaskManualStabilized.hpp
@@ -45,7 +45,7 @@
 class FlightTaskManualStabilized : public FlightTaskManual
 {
 public:
-	FlightTaskManualStabilized(control::SuperBlock *parent, const char *name);
+	FlightTaskManualStabilized() = default;
 
 	virtual ~FlightTaskManualStabilized() = default;
 
@@ -60,15 +60,17 @@ protected:
 
 private:
 
-	float _throttle{}; /** mapped from stick z */
-
 	void _updateHeadingSetpoints(); /**< sets yaw or yaw speed */
 	void _updateThrustSetpoints(); /**< sets thrust setpoint */
 	float _throttleCurve(); /**< piecewise linear mapping from stick to throttle */
 
-	control::BlockParamFloat _yaw_rate_scaling; /**< scaling factor from stick to yaw rate */
-	control::BlockParamFloat _tilt_max_man; /**< maximum tilt allowed for manual flight */
-	control::BlockParamFloat _throttle_min; /**< minimum throttle that always has to be satisfied in flight*/
-	control::BlockParamFloat _throttle_max; /**< maximum throttle that always has to be satisfied in flight*/
-	control::BlockParamFloat _throttle_hover; /**< throttle value at which vehicle is at hover equilibrium */
+	float _throttle{}; /** mapped from stick z */
+
+	DEFINE_PARAMETERS_CUSTOM_PARENT(FlightTaskManual,
+					(ParamFloat<px4::params::MPC_MAN_Y_MAX>) _yaw_rate_scaling, /**< scaling factor from stick to yaw rate */
+					(ParamFloat<px4::params::MPC_MAN_TILT_MAX>) _tilt_max_man, /**< maximum tilt allowed for manual flight */
+					(ParamFloat<px4::params::MPC_THR_MIN>) _throttle_min, /**< minimum throttle that always has to be satisfied in flight*/
+					(ParamFloat<px4::params::MPC_THR_MAX>) _throttle_max, /**< maximum throttle that always has to be satisfied in flight*/
+					(ParamFloat<px4::params::MPC_THR_HOVER>) _throttle_hover /**< throttle value at which vehicle is at hover equilibrium */
+				       )
 };
diff --git a/src/lib/FlightTasks/tasks/FlightTaskOrbit.cpp b/src/lib/FlightTasks/tasks/FlightTaskOrbit.cpp
index 3af14f8147b2a205c031e1b27b2b1fe3c94be284..4b2e8f11401c471f4bf5f735b3189771a4939637 100644
--- a/src/lib/FlightTasks/tasks/FlightTaskOrbit.cpp
+++ b/src/lib/FlightTasks/tasks/FlightTaskOrbit.cpp
@@ -40,8 +40,7 @@
 
 using namespace matrix;
 
-FlightTaskOrbit::FlightTaskOrbit(control::SuperBlock *parent, const char *name) :
-	FlightTaskManual(parent, name)
+FlightTaskOrbit::FlightTaskOrbit()
 {
 	_sticks_data_required = false;
 }
diff --git a/src/lib/FlightTasks/tasks/FlightTaskOrbit.hpp b/src/lib/FlightTasks/tasks/FlightTaskOrbit.hpp
index ce501f6f881cadb148bfce6e0ffb3e3827137473..1a71d6d1548ee1e77451034e6eef4afe315db1a9 100644
--- a/src/lib/FlightTasks/tasks/FlightTaskOrbit.hpp
+++ b/src/lib/FlightTasks/tasks/FlightTaskOrbit.hpp
@@ -46,7 +46,7 @@
 class FlightTaskOrbit : public FlightTaskManual
 {
 public:
-	FlightTaskOrbit(control::SuperBlock *parent, const char *name);
+	FlightTaskOrbit();
 
 	virtual ~FlightTaskOrbit() = default;
 
diff --git a/src/lib/FlightTasks/tasks/FlightTaskSport.hpp b/src/lib/FlightTasks/tasks/FlightTaskSport.hpp
index f8db313781e486e7b3e8ac1d6c9387497dee8ab8..7f77d9145ea8bd1eeccb4cda8e72e376a02e1daf 100644
--- a/src/lib/FlightTasks/tasks/FlightTaskSport.hpp
+++ b/src/lib/FlightTasks/tasks/FlightTaskSport.hpp
@@ -48,10 +48,7 @@ using namespace matrix;
 class FlightTaskSport : public FlightTaskManualPosition
 {
 public:
-	FlightTaskSport(control::SuperBlock *parent, const char *name) :
-		FlightTaskManualPosition(parent, name),
-		_vel_xy_max(parent, "MPC_XY_VEL_MAX", false)
-	{ }
+	FlightTaskSport() = default;
 
 	virtual ~FlightTaskSport() = default;
 
@@ -70,6 +67,9 @@ protected:
 	}
 
 private:
-	control::BlockParamFloat _vel_xy_max; /**< maximal allowed horizontal speed, in sport mode full stick input*/
+	DEFINE_PARAMETERS_CUSTOM_PARENT(FlightTaskManualPosition,
+					(ParamFloat<px4::params::MPC_XY_VEL_MAX>)
+					_vel_xy_max /**< maximal allowed horizontal speed, in sport mode full stick input*/
+				       )
 
 };
diff --git a/src/modules/mc_pos_control/mc_pos_control_main.cpp b/src/modules/mc_pos_control/mc_pos_control_main.cpp
index dd0f84a4818b4a4cdc625bd13887f099a6a56caa..9af098375fcd272823eddef3019ace9b6e71db0a 100644
--- a/src/modules/mc_pos_control/mc_pos_control_main.cpp
+++ b/src/modules/mc_pos_control/mc_pos_control_main.cpp
@@ -562,6 +562,8 @@ MulticopterPositionControl::parameters_update(bool force)
 		ModuleParams::updateParams();
 		SuperBlock::updateParams();
 
+		_flight_tasks.handleParameterUpdate();
+
 		/* initialize vectors from params and enforce constraints */
 
 		_pos_p(0) = _xy_p.get();