diff --git a/internal.c b/internal.c
index 9d2069d..fa45798 100644
--- a/internal.c
+++ b/internal.c
@@ -152,22 +152,21 @@
 
 enum chipbustype internal_buses_supported = BUS_NONE;
 
-static int internal_init(void)
+static int get_params(int *boardenable, int *boardmismatch,
+		int *force_laptop, int *not_a_laptop,
+		char **board_vendor, char **board_model)
 {
-	int ret = 0;
-	int force_laptop = 0;
-	int not_a_laptop = 0;
-	char *board_vendor = NULL;
-	char *board_model = NULL;
-#if defined(__i386__) || defined(__x86_64__)
-	const char *cb_vendor = NULL;
-	const char *cb_model = NULL;
-#endif
 	char *arg;
 
+	/* default values. */
+	*force_laptop = 0;
+	*not_a_laptop = 0;
+	*board_vendor = NULL;
+	*board_model = NULL;
+
 	arg = extract_programmer_param("boardenable");
 	if (arg && !strcmp(arg,"force")) {
-		force_boardenable = 1;
+		*boardenable = 1;
 	} else if (arg && !strlen(arg)) {
 		msg_perr("Missing argument for boardenable.\n");
 		free(arg);
@@ -181,7 +180,7 @@
 
 	arg = extract_programmer_param("boardmismatch");
 	if (arg && !strcmp(arg,"force")) {
-		force_boardmismatch = 1;
+		*boardmismatch = 1;
 	} else if (arg && !strlen(arg)) {
 		msg_perr("Missing argument for boardmismatch.\n");
 		free(arg);
@@ -195,9 +194,9 @@
 
 	arg = extract_programmer_param("laptop");
 	if (arg && !strcmp(arg, "force_I_want_a_brick"))
-		force_laptop = 1;
+		*force_laptop = 1;
 	else if (arg && !strcmp(arg, "this_is_not_a_laptop"))
-		not_a_laptop = 1;
+		*not_a_laptop = 1;
 	else if (arg && !strlen(arg)) {
 		msg_perr("Missing argument for laptop.\n");
 		free(arg);
@@ -211,7 +210,7 @@
 
 	arg = extract_programmer_param("mainboard");
 	if (arg && strlen(arg)) {
-		if (board_parse_parameter(arg, &board_vendor, &board_model)) {
+		if (board_parse_parameter(arg, board_vendor, board_model)) {
 			free(arg);
 			return 1;
 		}
@@ -222,6 +221,26 @@
 	}
 	free(arg);
 
+	return 0;
+}
+
+static int internal_init(void)
+{
+	int ret = 0;
+	int force_laptop;
+	int not_a_laptop;
+	char *board_vendor;
+	char *board_model;
+#if defined(__i386__) || defined(__x86_64__)
+	const char *cb_vendor = NULL;
+	const char *cb_model = NULL;
+#endif
+
+	ret = get_params(&force_boardenable, &force_boardmismatch,
+			 &force_laptop, &not_a_laptop,
+			 &board_vendor, &board_model);
+	if (ret)
+		return ret;
 
 	/* Unconditionally reset global state from previous operation. */
 	laptop_ok = false;
