line->line[line->length - 1] = '\0';
 }
 
-void get_key(const char* line, config_value* value)
+void get_key(config_line* line, config_value* value)
 {
-       value->key_length = 0;
-       while(line[value->key_length] != '=') {
-               value->key_length++;
+       int delimiter = 0;
+       while(line->line[delimiter] != '=') {
+               delimiter++;
        }
+       value->key_length = delimiter;
 
        value->key = malloc(sizeof(char) * value->key_length);
-       memcpy(value->key, line, value->key_length - 1);
+       memcpy(value->key, line->line, value->key_length - 1);
        value->key[value->key_length - 1] = '\0';
 }
 
-void get_value(char* line, config_value* value)
+void get_value(config_line* line, config_value* value)
 {
-       int i = 0;
-       while (line[i] != '=') {
-               i++;
+       int delimiter = 0;
+       while(line->line[delimiter] != '=') {
+               delimiter++;
        }
+
+       value->value_length = line->length - delimiter;
+       value->value = malloc(sizeof(char) * value->value_length + 1);
+       memcpy(value->value, line->line + delimiter + 1, value->value_length);
+       value->value[value->value_length] = '\0';
 }
 
 void loadConfig(program_config* config, const char* config_stream)
        value.value = NULL;
 
        get_line(config_stream, &line);
-       get_key(line.line, &value);
+       get_key(&line, &value);
+       get_value(&line, &value);
 
        config->scanner_url = malloc(sizeof(char) * value.key_length);
-       memcpy(config->scanner_url, value.key, value.key_length);
+       memcpy(config->scanner_url, value.value, value.value_length);
 
        free(line.line);
        line.line = NULL;
        line.length = 0;
+       free(value.value);
+       value.value = NULL;
+       value.value_length = 0;
+       free(value.key);
+       value.key = NULL;
+       value.key_length = 0;
 }
\ No newline at end of file