diff --git a/src/main/java/ctbrec/Settings.java b/src/main/java/ctbrec/Settings.java
index a8809ddf..96e878bc 100644
--- a/src/main/java/ctbrec/Settings.java
+++ b/src/main/java/ctbrec/Settings.java
@@ -22,6 +22,8 @@ public class Settings {
     public String mediaPlayer = "/usr/bin/mpv";
     public String username = ""; // chaturbate username TODO maybe rename this onetime
     public String password = ""; // chaturbate password TODO maybe rename this onetime
+    public String bongaUsername = "";
+    public String bongaPassword = "";
     public String mfcUsername = "";
     public String mfcPassword = "";
     public String camsodaUsername = "";
diff --git a/src/main/java/ctbrec/sites/ConfigUI.java b/src/main/java/ctbrec/sites/ConfigUI.java
new file mode 100644
index 00000000..33d97ec8
--- /dev/null
+++ b/src/main/java/ctbrec/sites/ConfigUI.java
@@ -0,0 +1,7 @@
+package ctbrec.sites;
+
+import javafx.scene.Parent;
+
+public interface ConfigUI {
+    public Parent createConfigPanel();
+}
diff --git a/src/main/java/ctbrec/sites/Site.java b/src/main/java/ctbrec/sites/Site.java
index 411be906..29a0e226 100644
--- a/src/main/java/ctbrec/sites/Site.java
+++ b/src/main/java/ctbrec/sites/Site.java
@@ -6,7 +6,6 @@ import ctbrec.Model;
 import ctbrec.io.HttpClient;
 import ctbrec.recorder.Recorder;
 import ctbrec.ui.TabProvider;
-import javafx.scene.Node;
 
 public interface Site {
     public String getName();
@@ -24,7 +23,7 @@ public interface Site {
     public boolean supportsTips();
     public boolean supportsFollow();
     public boolean isSiteForModel(Model m);
-    public Node getConfigurationGui();
+    public ConfigUI getConfigurationGui();
     public boolean credentialsAvailable();
     public void setEnabled(boolean enabled);
     public boolean isEnabled();
diff --git a/src/main/java/ctbrec/sites/cam4/Cam4.java b/src/main/java/ctbrec/sites/cam4/Cam4.java
index 5d791883..7533f96e 100644
--- a/src/main/java/ctbrec/sites/cam4/Cam4.java
+++ b/src/main/java/ctbrec/sites/cam4/Cam4.java
@@ -9,17 +9,8 @@ import ctbrec.Model;
 import ctbrec.io.HttpClient;
 import ctbrec.recorder.Recorder;
 import ctbrec.sites.AbstractSite;
-import ctbrec.ui.DesktopIntergation;
-import ctbrec.ui.SettingsTab;
+import ctbrec.sites.ConfigUI;
 import ctbrec.ui.TabProvider;
-import javafx.geometry.Insets;
-import javafx.scene.Node;
-import javafx.scene.control.Button;
-import javafx.scene.control.Label;
-import javafx.scene.control.PasswordField;
-import javafx.scene.control.TextField;
-import javafx.scene.layout.GridPane;
-import javafx.scene.layout.Priority;
 
 public class Cam4 extends AbstractSite {
 
@@ -124,32 +115,7 @@ public class Cam4 extends AbstractSite {
     }
 
     @Override
-    public Node getConfigurationGui() {
-        GridPane layout = SettingsTab.createGridLayout();
-        layout.add(new Label("Cam4 User"), 0, 0);
-        TextField username = new TextField(Config.getInstance().getSettings().cam4Username);
-        username.focusedProperty().addListener((e) -> Config.getInstance().getSettings().cam4Username = username.getText());
-        GridPane.setFillWidth(username, true);
-        GridPane.setHgrow(username, Priority.ALWAYS);
-        GridPane.setColumnSpan(username, 2);
-        layout.add(username, 1, 0);
-
-        layout.add(new Label("Cam4 Password"), 0, 1);
-        PasswordField password = new PasswordField();
-        password.setText(Config.getInstance().getSettings().cam4Password);
-        password.focusedProperty().addListener((e) -> Config.getInstance().getSettings().cam4Password = password.getText());
-        GridPane.setFillWidth(password, true);
-        GridPane.setHgrow(password, Priority.ALWAYS);
-        GridPane.setColumnSpan(password, 2);
-        layout.add(password, 1, 1);
-
-        Button createAccount = new Button("Create new Account");
-        createAccount.setOnAction((e) -> DesktopIntergation.open(Cam4.AFFILIATE_LINK));
-        layout.add(createAccount, 1, 2);
-        GridPane.setColumnSpan(createAccount, 2);
-        GridPane.setMargin(username, new Insets(0, 0, 0, SettingsTab.CHECKBOX_MARGIN));
-        GridPane.setMargin(password, new Insets(0, 0, 0, SettingsTab.CHECKBOX_MARGIN));
-        GridPane.setMargin(createAccount, new Insets(0, 0, 0, SettingsTab.CHECKBOX_MARGIN));
-        return layout;
+    public ConfigUI getConfigurationGui() {
+        return new Cam4ConfigUI();
     }
 }
diff --git a/src/main/java/ctbrec/sites/cam4/Cam4ConfigUI.java b/src/main/java/ctbrec/sites/cam4/Cam4ConfigUI.java
new file mode 100644
index 00000000..4c1bef12
--- /dev/null
+++ b/src/main/java/ctbrec/sites/cam4/Cam4ConfigUI.java
@@ -0,0 +1,48 @@
+package ctbrec.sites.cam4;
+
+import ctbrec.Config;
+import ctbrec.sites.ConfigUI;
+import ctbrec.ui.DesktopIntergation;
+import ctbrec.ui.SettingsTab;
+import javafx.geometry.Insets;
+import javafx.scene.Parent;
+import javafx.scene.control.Button;
+import javafx.scene.control.Label;
+import javafx.scene.control.PasswordField;
+import javafx.scene.control.TextField;
+import javafx.scene.layout.GridPane;
+import javafx.scene.layout.Priority;
+
+public class Cam4ConfigUI implements ConfigUI {
+
+    @Override
+    public Parent createConfigPanel() {
+        GridPane layout = SettingsTab.createGridLayout();
+        layout.add(new Label("Cam4 User"), 0, 0);
+        TextField username = new TextField(Config.getInstance().getSettings().cam4Username);
+        username.focusedProperty().addListener((e) -> Config.getInstance().getSettings().cam4Username = username.getText());
+        GridPane.setFillWidth(username, true);
+        GridPane.setHgrow(username, Priority.ALWAYS);
+        GridPane.setColumnSpan(username, 2);
+        layout.add(username, 1, 0);
+
+        layout.add(new Label("Cam4 Password"), 0, 1);
+        PasswordField password = new PasswordField();
+        password.setText(Config.getInstance().getSettings().cam4Password);
+        password.focusedProperty().addListener((e) -> Config.getInstance().getSettings().cam4Password = password.getText());
+        GridPane.setFillWidth(password, true);
+        GridPane.setHgrow(password, Priority.ALWAYS);
+        GridPane.setColumnSpan(password, 2);
+        layout.add(password, 1, 1);
+
+        Button createAccount = new Button("Create new Account");
+        createAccount.setOnAction((e) -> DesktopIntergation.open(Cam4.AFFILIATE_LINK));
+        layout.add(createAccount, 1, 2);
+        GridPane.setColumnSpan(createAccount, 2);
+        GridPane.setMargin(username, new Insets(0, 0, 0, SettingsTab.CHECKBOX_MARGIN));
+        GridPane.setMargin(password, new Insets(0, 0, 0, SettingsTab.CHECKBOX_MARGIN));
+        GridPane.setMargin(createAccount, new Insets(0, 0, 0, SettingsTab.CHECKBOX_MARGIN));
+        return layout;
+    }
+
+}
diff --git a/src/main/java/ctbrec/sites/camsoda/Camsoda.java b/src/main/java/ctbrec/sites/camsoda/Camsoda.java
index 3cf7f937..c405b336 100644
--- a/src/main/java/ctbrec/sites/camsoda/Camsoda.java
+++ b/src/main/java/ctbrec/sites/camsoda/Camsoda.java
@@ -9,17 +9,8 @@ import ctbrec.Model;
 import ctbrec.io.HttpClient;
 import ctbrec.recorder.Recorder;
 import ctbrec.sites.AbstractSite;
-import ctbrec.ui.DesktopIntergation;
-import ctbrec.ui.SettingsTab;
+import ctbrec.sites.ConfigUI;
 import ctbrec.ui.TabProvider;
-import javafx.geometry.Insets;
-import javafx.scene.Node;
-import javafx.scene.control.Button;
-import javafx.scene.control.Label;
-import javafx.scene.control.PasswordField;
-import javafx.scene.control.TextField;
-import javafx.scene.layout.GridPane;
-import javafx.scene.layout.Priority;
 import okhttp3.Request;
 import okhttp3.Response;
 
@@ -44,6 +35,11 @@ public class Camsoda extends AbstractSite {
         return BASE_URI;
     }
 
+    @Override
+    public String getBuyTokensLink() {
+        return BASE_URI;
+    }
+
     @Override
     public void setRecorder(Recorder recorder) {
         this.recorder = recorder;
@@ -87,11 +83,6 @@ public class Camsoda extends AbstractSite {
         throw new RuntimeException("Tokens not found in response");
     }
 
-    @Override
-    public String getBuyTokensLink() {
-        return getBaseUrl();
-    }
-
     @Override
     public void login() throws IOException {
         if(credentialsAvailable()) {
@@ -140,32 +131,7 @@ public class Camsoda extends AbstractSite {
     }
 
     @Override
-    public Node getConfigurationGui() {
-        GridPane layout = SettingsTab.createGridLayout();
-        layout.add(new Label("CamSoda User"), 0, 0);
-        TextField username = new TextField(Config.getInstance().getSettings().camsodaUsername);
-        username.focusedProperty().addListener((e) -> Config.getInstance().getSettings().camsodaUsername = username.getText());
-        GridPane.setFillWidth(username, true);
-        GridPane.setHgrow(username, Priority.ALWAYS);
-        GridPane.setColumnSpan(username, 2);
-        layout.add(username, 1, 0);
-
-        layout.add(new Label("CamSoda Password"), 0, 1);
-        PasswordField password = new PasswordField();
-        password.setText(Config.getInstance().getSettings().camsodaPassword);
-        password.focusedProperty().addListener((e) -> Config.getInstance().getSettings().camsodaPassword = password.getText());
-        GridPane.setFillWidth(password, true);
-        GridPane.setHgrow(password, Priority.ALWAYS);
-        GridPane.setColumnSpan(password, 2);
-        layout.add(password, 1, 1);
-
-        Button createAccount = new Button("Create new Account");
-        createAccount.setOnAction((e) -> DesktopIntergation.open(getAffiliateLink()));
-        layout.add(createAccount, 1, 2);
-        GridPane.setColumnSpan(createAccount, 2);
-        GridPane.setMargin(username, new Insets(0, 0, 0, SettingsTab.CHECKBOX_MARGIN));
-        GridPane.setMargin(password, new Insets(0, 0, 0, SettingsTab.CHECKBOX_MARGIN));
-        GridPane.setMargin(createAccount, new Insets(0, 0, 0, SettingsTab.CHECKBOX_MARGIN));
-        return layout;
+    public ConfigUI getConfigurationGui() {
+        return new CamsodaConfigUI(this);
     }
 }
diff --git a/src/main/java/ctbrec/sites/camsoda/CamsodaConfigUI.java b/src/main/java/ctbrec/sites/camsoda/CamsodaConfigUI.java
new file mode 100644
index 00000000..056ecd86
--- /dev/null
+++ b/src/main/java/ctbrec/sites/camsoda/CamsodaConfigUI.java
@@ -0,0 +1,54 @@
+package ctbrec.sites.camsoda;
+
+import ctbrec.Config;
+import ctbrec.sites.ConfigUI;
+import ctbrec.ui.DesktopIntergation;
+import ctbrec.ui.SettingsTab;
+import javafx.geometry.Insets;
+import javafx.scene.Parent;
+import javafx.scene.control.Button;
+import javafx.scene.control.Label;
+import javafx.scene.control.PasswordField;
+import javafx.scene.control.TextField;
+import javafx.scene.layout.GridPane;
+import javafx.scene.layout.Priority;
+
+public class CamsodaConfigUI implements ConfigUI {
+
+    private Camsoda camsoda;
+
+    public CamsodaConfigUI(Camsoda camsoda) {
+        this.camsoda = camsoda;
+    }
+
+    @Override
+    public Parent createConfigPanel() {
+        GridPane layout = SettingsTab.createGridLayout();
+        layout.add(new Label("CamSoda User"), 0, 0);
+        TextField username = new TextField(Config.getInstance().getSettings().camsodaUsername);
+        username.focusedProperty().addListener((e) -> Config.getInstance().getSettings().camsodaUsername = username.getText());
+        GridPane.setFillWidth(username, true);
+        GridPane.setHgrow(username, Priority.ALWAYS);
+        GridPane.setColumnSpan(username, 2);
+        layout.add(username, 1, 0);
+
+        layout.add(new Label("CamSoda Password"), 0, 1);
+        PasswordField password = new PasswordField();
+        password.setText(Config.getInstance().getSettings().camsodaPassword);
+        password.focusedProperty().addListener((e) -> Config.getInstance().getSettings().camsodaPassword = password.getText());
+        GridPane.setFillWidth(password, true);
+        GridPane.setHgrow(password, Priority.ALWAYS);
+        GridPane.setColumnSpan(password, 2);
+        layout.add(password, 1, 1);
+
+        Button createAccount = new Button("Create new Account");
+        createAccount.setOnAction((e) -> DesktopIntergation.open(camsoda.getAffiliateLink()));
+        layout.add(createAccount, 1, 2);
+        GridPane.setColumnSpan(createAccount, 2);
+        GridPane.setMargin(username, new Insets(0, 0, 0, SettingsTab.CHECKBOX_MARGIN));
+        GridPane.setMargin(password, new Insets(0, 0, 0, SettingsTab.CHECKBOX_MARGIN));
+        GridPane.setMargin(createAccount, new Insets(0, 0, 0, SettingsTab.CHECKBOX_MARGIN));
+        return layout;
+    }
+
+}
diff --git a/src/main/java/ctbrec/sites/chaturbate/Chaturbate.java b/src/main/java/ctbrec/sites/chaturbate/Chaturbate.java
index 984e8c69..d06b37b4 100644
--- a/src/main/java/ctbrec/sites/chaturbate/Chaturbate.java
+++ b/src/main/java/ctbrec/sites/chaturbate/Chaturbate.java
@@ -29,18 +29,9 @@ import ctbrec.Model;
 import ctbrec.io.HttpClient;
 import ctbrec.recorder.Recorder;
 import ctbrec.sites.AbstractSite;
-import ctbrec.ui.DesktopIntergation;
+import ctbrec.sites.ConfigUI;
 import ctbrec.ui.HtmlParser;
-import ctbrec.ui.SettingsTab;
 import ctbrec.ui.TabProvider;
-import javafx.geometry.Insets;
-import javafx.scene.Node;
-import javafx.scene.control.Button;
-import javafx.scene.control.Label;
-import javafx.scene.control.PasswordField;
-import javafx.scene.control.TextField;
-import javafx.scene.layout.GridPane;
-import javafx.scene.layout.Priority;
 import okhttp3.FormBody;
 import okhttp3.Request;
 import okhttp3.RequestBody;
@@ -316,33 +307,8 @@ public class Chaturbate extends AbstractSite {
     }
 
     @Override
-    public Node getConfigurationGui() {
-        GridPane layout = SettingsTab.createGridLayout();
-        layout.add(new Label("Chaturbate User"), 0, 0);
-        TextField username = new TextField(Config.getInstance().getSettings().username);
-        username.focusedProperty().addListener((e) -> Config.getInstance().getSettings().username = username.getText());
-        GridPane.setFillWidth(username, true);
-        GridPane.setHgrow(username, Priority.ALWAYS);
-        GridPane.setColumnSpan(username, 2);
-        layout.add(username, 1, 0);
-
-        layout.add(new Label("Chaturbate Password"), 0, 1);
-        PasswordField password = new PasswordField();
-        password.setText(Config.getInstance().getSettings().password);
-        password.focusedProperty().addListener((e) -> Config.getInstance().getSettings().password = password.getText());
-        GridPane.setFillWidth(password, true);
-        GridPane.setHgrow(password, Priority.ALWAYS);
-        GridPane.setColumnSpan(password, 2);
-        layout.add(password, 1, 1);
-
-        Button createAccount = new Button("Create new Account");
-        createAccount.setOnAction((e) -> DesktopIntergation.open(Chaturbate.REGISTRATION_LINK));
-        layout.add(createAccount, 1, 2);
-        GridPane.setColumnSpan(createAccount, 2);
-        GridPane.setMargin(username, new Insets(0, 0, 0, SettingsTab.CHECKBOX_MARGIN));
-        GridPane.setMargin(password, new Insets(0, 0, 0, SettingsTab.CHECKBOX_MARGIN));
-        GridPane.setMargin(createAccount, new Insets(0, 0, 0, SettingsTab.CHECKBOX_MARGIN));
-        return layout;
+    public ConfigUI getConfigurationGui() {
+        return new ChaturbateConfigUi();
     }
 
     @Override
diff --git a/src/main/java/ctbrec/sites/chaturbate/ChaturbateConfigUi.java b/src/main/java/ctbrec/sites/chaturbate/ChaturbateConfigUi.java
new file mode 100644
index 00000000..b215b879
--- /dev/null
+++ b/src/main/java/ctbrec/sites/chaturbate/ChaturbateConfigUi.java
@@ -0,0 +1,48 @@
+package ctbrec.sites.chaturbate;
+
+import ctbrec.Config;
+import ctbrec.sites.ConfigUI;
+import ctbrec.ui.DesktopIntergation;
+import ctbrec.ui.SettingsTab;
+import javafx.geometry.Insets;
+import javafx.scene.Parent;
+import javafx.scene.control.Button;
+import javafx.scene.control.Label;
+import javafx.scene.control.PasswordField;
+import javafx.scene.control.TextField;
+import javafx.scene.layout.GridPane;
+import javafx.scene.layout.Priority;
+
+public class ChaturbateConfigUi implements ConfigUI {
+    @Override
+    public Parent createConfigPanel() {
+        GridPane layout = SettingsTab.createGridLayout();
+
+        layout.add(new Label("Chaturbate User"), 0, 0);
+        TextField username = new TextField(Config.getInstance().getSettings().username);
+        username.focusedProperty().addListener((e) -> Config.getInstance().getSettings().username = username.getText());
+        GridPane.setFillWidth(username, true);
+        GridPane.setHgrow(username, Priority.ALWAYS);
+        GridPane.setColumnSpan(username, 2);
+        layout.add(username, 1, 0);
+
+        layout.add(new Label("Chaturbate Password"), 0, 1);
+        PasswordField password = new PasswordField();
+        password.setText(Config.getInstance().getSettings().password);
+        password.focusedProperty().addListener((e) -> Config.getInstance().getSettings().password = password.getText());
+        GridPane.setFillWidth(password, true);
+        GridPane.setHgrow(password, Priority.ALWAYS);
+        GridPane.setColumnSpan(password, 2);
+        layout.add(password, 1, 1);
+
+        Button createAccount = new Button("Create new Account");
+        createAccount.setOnAction((e) -> DesktopIntergation.open(Chaturbate.REGISTRATION_LINK));
+        layout.add(createAccount, 1, 2);
+        GridPane.setColumnSpan(createAccount, 2);
+        GridPane.setMargin(username, new Insets(0, 0, 0, SettingsTab.CHECKBOX_MARGIN));
+        GridPane.setMargin(password, new Insets(0, 0, 0, SettingsTab.CHECKBOX_MARGIN));
+        GridPane.setMargin(createAccount, new Insets(0, 0, 0, SettingsTab.CHECKBOX_MARGIN));
+
+        return layout;
+    }
+}
diff --git a/src/main/java/ctbrec/sites/mfc/MyFreeCams.java b/src/main/java/ctbrec/sites/mfc/MyFreeCams.java
index c06c1218..1d857810 100644
--- a/src/main/java/ctbrec/sites/mfc/MyFreeCams.java
+++ b/src/main/java/ctbrec/sites/mfc/MyFreeCams.java
@@ -8,18 +8,9 @@ import ctbrec.Config;
 import ctbrec.Model;
 import ctbrec.recorder.Recorder;
 import ctbrec.sites.AbstractSite;
-import ctbrec.ui.DesktopIntergation;
+import ctbrec.sites.ConfigUI;
 import ctbrec.ui.HtmlParser;
-import ctbrec.ui.SettingsTab;
 import ctbrec.ui.TabProvider;
-import javafx.geometry.Insets;
-import javafx.scene.Node;
-import javafx.scene.control.Button;
-import javafx.scene.control.Label;
-import javafx.scene.control.PasswordField;
-import javafx.scene.control.TextField;
-import javafx.scene.layout.GridPane;
-import javafx.scene.layout.Priority;
 import okhttp3.Request;
 import okhttp3.Response;
 
@@ -129,33 +120,8 @@ public class MyFreeCams extends AbstractSite {
     }
 
     @Override
-    public Node getConfigurationGui() {
-        GridPane layout = SettingsTab.createGridLayout();
-        layout.add(new Label("MyFreeCams User"), 0, 0);
-        TextField username = new TextField(Config.getInstance().getSettings().mfcUsername);
-        username.focusedProperty().addListener((e) -> Config.getInstance().getSettings().mfcUsername = username.getText());
-        GridPane.setFillWidth(username, true);
-        GridPane.setHgrow(username, Priority.ALWAYS);
-        GridPane.setColumnSpan(username, 2);
-        layout.add(username, 1, 0);
-
-        layout.add(new Label("MyFreeCams Password"), 0, 1);
-        PasswordField password = new PasswordField();
-        password.setText(Config.getInstance().getSettings().mfcPassword);
-        password.focusedProperty().addListener((e) -> Config.getInstance().getSettings().mfcPassword = password.getText());
-        GridPane.setFillWidth(password, true);
-        GridPane.setHgrow(password, Priority.ALWAYS);
-        GridPane.setColumnSpan(password, 2);
-        layout.add(password, 1, 1);
-
-        Button createAccount = new Button("Create new Account");
-        createAccount.setOnAction((e) -> DesktopIntergation.open(getAffiliateLink()));
-        layout.add(createAccount, 1, 2);
-        GridPane.setColumnSpan(createAccount, 2);
-        GridPane.setMargin(username, new Insets(0, 0, 0, SettingsTab.CHECKBOX_MARGIN));
-        GridPane.setMargin(password, new Insets(0, 0, 0, SettingsTab.CHECKBOX_MARGIN));
-        GridPane.setMargin(createAccount, new Insets(0, 0, 0, SettingsTab.CHECKBOX_MARGIN));
-        return layout;
+    public ConfigUI getConfigurationGui() {
+        return new MyFreeCamsConfigUI(this);
     }
 
     @Override
diff --git a/src/main/java/ctbrec/sites/mfc/MyFreeCamsConfigUI.java b/src/main/java/ctbrec/sites/mfc/MyFreeCamsConfigUI.java
new file mode 100644
index 00000000..1190f061
--- /dev/null
+++ b/src/main/java/ctbrec/sites/mfc/MyFreeCamsConfigUI.java
@@ -0,0 +1,54 @@
+package ctbrec.sites.mfc;
+
+import ctbrec.Config;
+import ctbrec.sites.ConfigUI;
+import ctbrec.ui.DesktopIntergation;
+import ctbrec.ui.SettingsTab;
+import javafx.geometry.Insets;
+import javafx.scene.Parent;
+import javafx.scene.control.Button;
+import javafx.scene.control.Label;
+import javafx.scene.control.PasswordField;
+import javafx.scene.control.TextField;
+import javafx.scene.layout.GridPane;
+import javafx.scene.layout.Priority;
+
+public class MyFreeCamsConfigUI implements ConfigUI {
+
+    private MyFreeCams myFreeCams;
+
+    public MyFreeCamsConfigUI(MyFreeCams myFreeCams) {
+        this.myFreeCams = myFreeCams;
+    }
+
+    @Override
+    public Parent createConfigPanel() {
+        GridPane layout = SettingsTab.createGridLayout();
+        layout.add(new Label("MyFreeCams User"), 0, 0);
+        TextField username = new TextField(Config.getInstance().getSettings().mfcUsername);
+        username.focusedProperty().addListener((e) -> Config.getInstance().getSettings().mfcUsername = username.getText());
+        GridPane.setFillWidth(username, true);
+        GridPane.setHgrow(username, Priority.ALWAYS);
+        GridPane.setColumnSpan(username, 2);
+        layout.add(username, 1, 0);
+
+        layout.add(new Label("MyFreeCams Password"), 0, 1);
+        PasswordField password = new PasswordField();
+        password.setText(Config.getInstance().getSettings().mfcPassword);
+        password.focusedProperty().addListener((e) -> Config.getInstance().getSettings().mfcPassword = password.getText());
+        GridPane.setFillWidth(password, true);
+        GridPane.setHgrow(password, Priority.ALWAYS);
+        GridPane.setColumnSpan(password, 2);
+        layout.add(password, 1, 1);
+
+        Button createAccount = new Button("Create new Account");
+        createAccount.setOnAction((e) -> DesktopIntergation.open(myFreeCams.getAffiliateLink()));
+        layout.add(createAccount, 1, 2);
+        GridPane.setColumnSpan(createAccount, 2);
+        GridPane.setMargin(username, new Insets(0, 0, 0, SettingsTab.CHECKBOX_MARGIN));
+        GridPane.setMargin(password, new Insets(0, 0, 0, SettingsTab.CHECKBOX_MARGIN));
+        GridPane.setMargin(createAccount, new Insets(0, 0, 0, SettingsTab.CHECKBOX_MARGIN));
+        return layout;
+    }
+
+}
diff --git a/src/main/java/ctbrec/ui/SettingsTab.java b/src/main/java/ctbrec/ui/SettingsTab.java
index f0066613..6b8dc752 100644
--- a/src/main/java/ctbrec/ui/SettingsTab.java
+++ b/src/main/java/ctbrec/ui/SettingsTab.java
@@ -14,6 +14,7 @@ import com.sun.javafx.collections.ObservableListWrapper;
 import ctbrec.Config;
 import ctbrec.Hmac;
 import ctbrec.Settings;
+import ctbrec.sites.ConfigUI;
 import ctbrec.sites.Site;
 import javafx.beans.value.ChangeListener;
 import javafx.beans.value.ObservableValue;
@@ -119,9 +120,9 @@ public class SettingsTab extends Tab implements TabSelectionListener {
         rightSide.getChildren().add(credentialsAccordion);
         for (int i = 0; i < sites.size(); i++) {
             Site site = sites.get(i);
-            Node siteConfig = site.getConfigurationGui();
+            ConfigUI siteConfig = site.getConfigurationGui();
             if(siteConfig != null) {
-                TitledPane pane = new TitledPane(site.getName(), siteConfig);
+                TitledPane pane = new TitledPane(site.getName(), siteConfig.createConfigPanel());
                 credentialsAccordion.getPanes().add(pane);
             }
         }