diff --git a/soitool/setup_settings.py b/soitool/setup_settings.py
index 7e3d623a35b0f776da2cc8b6c9e0946d52afaf01..fc05e1a3c196af66a5178b1263af660c97d19417 100644
--- a/soitool/setup_settings.py
+++ b/soitool/setup_settings.py
@@ -16,6 +16,11 @@ from PySide2.QtWidgets import (
     QComboBox,
     QGroupBox,
 )
+from soitool.soi import (
+    STRING_TO_ALGORITHM_RECTPACK_BIN,
+    STRING_TO_ALGORITHM_RECTPACK_PACK,
+    STRING_TO_ALGORITHM_INITIAL_SORT,
+)
 
 
 class Setup(QDialog):  # pylint: disable = R0902
@@ -120,28 +125,25 @@ class Setup(QDialog):  # pylint: disable = R0902
 
         # placement algorithm
         self.layout_setup.addWidget(self.label_algorithm)
-        self.rbutton_bin1 = QRadioButton("BFF")
-        self.rbutton_bin2 = QRadioButton("BBF")
-        self.rbutton_pack1 = QRadioButton("MaxRectsBI")
-        self.rbutton_pack2 = QRadioButton("SkylinBl")
-        self.rbutton_pack3 = QRadioButton("GuillotineBssfSas")
-        self.rbutton_sort1 = QRadioButton("none")
-        self.rbutton_sort2 = QRadioButton("area")
-        self.rbutton_sort3 = QRadioButton("width")
-        self.rbutton_sort4 = QRadioButton("height")
+        self.rbuttons_option_bin = [
+            QRadioButton(name) for name in STRING_TO_ALGORITHM_RECTPACK_BIN
+        ]
+        self.rbuttons_option_pack = [
+            QRadioButton(name) for name in STRING_TO_ALGORITHM_RECTPACK_PACK
+        ]
+        self.rbuttons_option_sort = [
+            QRadioButton(name) for name in STRING_TO_ALGORITHM_INITIAL_SORT
+        ]
 
         self.layout_alg_button_bin.addWidget(QLabel("Bin"))
-        self.layout_alg_button_bin.addWidget(self.rbutton_bin1)
-        self.layout_alg_button_bin.addWidget(self.rbutton_bin2)
+        for rbutton in self.rbuttons_option_bin:
+            self.layout_alg_button_bin.addWidget(rbutton)
         self.layout_alg_button_pack.addWidget(QLabel("Pack"))
-        self.layout_alg_button_pack.addWidget(self.rbutton_pack1)
-        self.layout_alg_button_pack.addWidget(self.rbutton_pack2)
-        self.layout_alg_button_pack.addWidget(self.rbutton_pack3)
+        for rbutton in self.rbuttons_option_pack:
+            self.layout_alg_button_pack.addWidget(rbutton)
         self.layout_alg_button_sort.addWidget(QLabel("Sort"))
-        self.layout_alg_button_sort.addWidget(self.rbutton_sort1)
-        self.layout_alg_button_sort.addWidget(self.rbutton_sort2)
-        self.layout_alg_button_sort.addWidget(self.rbutton_sort3)
-        self.layout_alg_button_sort.addWidget(self.rbutton_sort4)
+        for rbutton in self.rbuttons_option_sort:
+            self.layout_alg_button_sort.addWidget(rbutton)
 
         self.group_algorithm_bin.setLayout(self.layout_alg_button_bin)
         self.group_algorithm_pack.setLayout(self.layout_alg_button_pack)
diff --git a/soitool/soi.py b/soitool/soi.py
index 7ca6689565adc76aea657f5661119664c28cdbbc..36b454a53c5de44dd52988372ab5a8504595bd4c 100644
--- a/soitool/soi.py
+++ b/soitool/soi.py
@@ -557,6 +557,9 @@ class SOI:
         All properties except "modules" and "attachements" can be updated
         using this function.
 
+        If a change is made that affects placement of modules this function
+        will call `reorganize`
+
         Parameters
         ----------
         **kwargs : key, value pairs of properties to update
@@ -603,3 +606,13 @@ class SOI:
 
         for listener in self.update_property_listeners:
             listener()
+
+        # If any properties relating to module placement were touched,
+        # reorganize
+        if (
+            "placement_strategy" in kwargs
+            or "algorithm_bin" in kwargs
+            or "algorithm_pack" in kwargs
+            or "algorithm_sort" in kwargs
+        ):
+            self.reorganize()