diff --git a/src/sample.c b/src/sample.c
index 6418be8..1993255 100644
--- a/src/sample.c
+++ b/src/sample.c
@@ -2130,13 +2130,64 @@
 }
 
 #ifdef USE_51DEGREES
-static int fiftyone_degrees(const struct arg *args,
-                           struct sample *smp, void *private)
+#ifdef FIFTYONEDEGREES_H_TRIE_INCLUDED
+static int
+sample_fiftyone_degrees(const struct arg *args, struct sample *smp, void *private)
+{
+	int i; // used in loops.
+	int device_offset;
+	int property_index;
+	char no_data[] = "NoData"; // response when no data could be found.
+	struct chunk *tmp;
+
+	// use a temporary trash buffer and copy data in it
+	smp->data.str.str[smp->data.str.len] = '\0';
+
+	// perform detection.
+	device_offset = fiftyoneDegreesGetDeviceOffset(smp->data.str.str);
+
+	i = 0;
+	tmp = get_trash_chunk();
+	chunk_reset(tmp);
+
+	// loop through property names passed to the filter and fetch them from the dataset.
+	while (args[i].data.str.str) {
+		// try to find request property in dataset.
+		property_index = fiftyoneDegreesGetPropertyIndex(args[i].data.str.str);
+		if (property_index > 0) {
+			chunk_appendf(tmp, "%s", fiftyoneDegreesGetValue(device_offset, property_index));
+		}
+		else {
+			chunk_appendf(tmp, "%s", no_data);
+		}
+		// add seperator
+		if (global._51d_property_seperator)
+			chunk_appendf(tmp, "%c", global._51d_property_seperator);
+		else
+			chunk_appendf(tmp, ",");
+		++i;
+	}
+
+	if (tmp->len) {
+		--tmp->len;
+		tmp->str[tmp->len] = '\0';
+	}
+
+	smp->data.str.str = tmp->str;
+	smp->data.str.len = strlen(smp->data.str.str);
+
+	return 1;
+}
+#endif // FIFTYONEDEGREES_H_TRIE_INCLUDED
+
+#ifdef FIFTYONEDEGREES_H_PATTERN_INCLUDED
+static int
+sample_fiftyone_degrees(const struct arg *args, struct sample *smp, void *private)
 {
 	int i, j, found; // used in loops.
 	fiftyoneDegreesWorkset* ws; // workset for detection.
 	char no_data[] = "NoData"; // response when no data could be found.
-	struct _51d_property_names *property;
+	const char* property_name;
 	struct chunk *tmp;
 
 	// use a temporary trash buffer and copy data in it
@@ -2157,17 +2208,18 @@
 	while (args[i].data.str.str) {
 		found = j = 0;
 		// try to find request property in dataset.
-		list_for_each_entry(property, &global._51d_property_names, list) {
-			if (strcmp(property->name, args[i].data.str.str) == 0) {
+		for (j = 0; j < ws->dataSet->requiredPropertyCount; j++) {
+			property_name = fiftyoneDegreesGetPropertyName(ws->dataSet, ws->dataSet->requiredProperties[j]);
+			if (strcmp(property_name, args[i].data.str.str) == 0) {
 				found = 1;
 				fiftyoneDegreesSetValues(ws, j);
 				chunk_appendf(tmp, "%s", fiftyoneDegreesGetValueName(ws->dataSet, *ws->values));
 				break;
 			}
-			++j;
 		}
-		if (!found)
+		if (!found) {
 			chunk_appendf(tmp, "%s", no_data);
+		}
 
 		// add seperator
 		if (global._51d_property_seperator)
@@ -2189,7 +2241,8 @@
 
 	return 1;
 }
-#endif
+#endif // FIFTYONEDEGREES_H_PATTERN_INCLUDED
+#endif // USE_51DEGREES
 
 
 /************************************************************************/
@@ -2346,7 +2399,7 @@
 	{ "mod",    sample_conv_arith_mod,  ARG1(1,UINT), NULL, SMP_T_UINT, SMP_T_UINT },
 	{ "neg",    sample_conv_arith_neg,             0, NULL, SMP_T_UINT, SMP_T_UINT },
 #ifdef USE_51DEGREES
-	{ "51d",    fiftyone_degrees,       ARG5(1,STR,STR,STR,STR,STR), NULL, SMP_T_STR, SMP_T_STR },
+	{ "51d",    sample_fiftyone_degrees,ARG5(1,STR,STR,STR,STR,STR), NULL, SMP_T_STR, SMP_T_STR },
 #endif
 
 	{ NULL, NULL, 0, 0, 0 },
