diff --git a/src/tracefs-instance.c b/src/tracefs-instance.c
index 0df313c..49645eb 100644
--- a/src/tracefs-instance.c
+++ b/src/tracefs-instance.c
@@ -18,6 +18,10 @@
 #include "tracefs.h"
 #include "tracefs-local.h"
 
+struct tracefs_options_mask {
+	unsigned long long	mask;
+};
+
 #define FLAG_INSTANCE_NEWLY_CREATED	(1 << 0)
 struct tracefs_instance {
 	char	*trace_dir;
@@ -587,3 +591,265 @@ out:
 	free(all_clocks);
 	return ret;
 }
+
+static const char * const options_map[] = {
+	"unknown",
+	"annotate",
+	"bin",
+	"blk_cgname",
+	"blk_cgroup",
+	"blk_classic",
+	"block",
+	"context-info",
+	"disable_on_free",
+	"display-graph",
+	"event-fork",
+	"funcgraph-abstime",
+	"funcgraph-cpu",
+	"funcgraph-duration",
+	"funcgraph-irqs",
+	"funcgraph-overhead",
+	"funcgraph-overrun",
+	"funcgraph-proc",
+	"funcgraph-tail",
+	"func_stack_trace",
+	"function-fork",
+	"function-trace",
+	"graph-time",
+	"hex",
+	"irq-info",
+	"latency-format",
+	"markers",
+	"overwrite",
+	"pause-on-trace",
+	"printk-msg-only",
+	"print-parent",
+	"raw",
+	"record-cmd",
+	"record-tgid",
+	"sleep-time",
+	"stacktrace",
+	"sym-addr",
+	"sym-offset",
+	"sym-userobj",
+	"trace_printk",
+	"userstacktrace",
+	"verbose" };
+
+/**
+ * tracefs_option_name - Get trace option name from id
+ * @id: trace option id
+ *
+ * Returns string with option name, or "unknown" in case of not known option id.
+ * The returned string must *not* be freed.
+ */
+const char *tracefs_option_name(enum tracefs_option_id id)
+{
+	/* Make sure options map contains all the options */
+	BUILD_BUG_ON(ARRAY_SIZE(options_map) != TRACEFS_OPTION_MAX);
+
+	if (id < TRACEFS_OPTION_MAX)
+		return options_map[id];
+
+	return options_map[0];
+}
+
+/**
+ * tracefs_option_id - Get trace option ID from name
+ * @name: trace option name
+ *
+ * Returns trace option ID or TRACEFS_OPTION_INVALID in case of an error or
+ * unknown option name.
+ */
+enum tracefs_option_id tracefs_option_id(const char *name)
+{
+	int i;
+
+	if (!name)
+		return TRACEFS_OPTION_INVALID;
+
+	for (i = 0; i < TRACEFS_OPTION_MAX; i++) {
+		if (strlen(name) == strlen(options_map[i]) &&
+		    !strcmp(options_map[i], name))
+			return i;
+	}
+
+	return TRACEFS_OPTION_INVALID;
+}
+
+static void tracefs_option_set(struct tracefs_options_mask *options,
+			       enum tracefs_option_id id)
+{
+	if (options && id > TRACEFS_OPTION_INVALID)
+		options->mask |= (1ULL << (id - 1));
+}
+
+static struct tracefs_options_mask *trace_get_options(struct tracefs_instance *instance,
+						      bool enabled)
+{
+	struct tracefs_options_mask *bitmask;
+	enum tracefs_option_id id;
+	char file[PATH_MAX];
+	struct dirent *dent;
+	char *dname = NULL;
+	DIR *dir = NULL;
+	long long val;
+
+	bitmask = calloc(1, sizeof(struct tracefs_options_mask));
+	if (!bitmask)
+		return NULL;
+	dname = tracefs_instance_get_file(instance, "options");
+	if (!dname)
+		goto error;
+	dir = opendir(dname);
+	if (!dir)
+		goto error;
+
+	while ((dent = readdir(dir))) {
+		if (*dent->d_name == '.')
+			continue;
+		if (enabled) {
+			snprintf(file, PATH_MAX, "options/%s", dent->d_name);
+			if (tracefs_instance_file_read_number(instance, file, &val) != 0 ||
+			    val != 1)
+				continue;
+		}
+		id = tracefs_option_id(dent->d_name);
+		if (id != TRACEFS_OPTION_INVALID)
+			tracefs_option_set(bitmask, id);
+	}
+	closedir(dir);
+	tracefs_put_tracing_file(dname);
+
+	return bitmask;
+
+error:
+	if (dir)
+		closedir(dir);
+	tracefs_put_tracing_file(dname);
+	free(bitmask);
+	return NULL;
+}
+
+/**
+ * tracefs_options_get_supported - Get all supported trace options in given instance
+ * @instance: ftrace instance, can be NULL for the top instance
+ *
+ * Returns allocated bitmask structure with all trace options, supported in given
+ * instance, or NULL in case of an error. The returned structure must be freed with free()
+ */
+struct tracefs_options_mask *tracefs_options_get_supported(struct tracefs_instance *instance)
+{
+	return trace_get_options(instance, false);
+}
+
+/**
+ * tracefs_options_get_enabled - Get all currently enabled trace options in given instance
+ * @instance: ftrace instance, can be NULL for the top instance
+ *
+ * Returns allocated bitmask structure with all trace options, enabled in given
+ * instance, or NULL in case of an error. The returned structure must be freed with free()
+ */
+struct tracefs_options_mask *tracefs_options_get_enabled(struct tracefs_instance *instance)
+{
+	return trace_get_options(instance, true);
+}
+
+static int trace_config_option(struct tracefs_instance *instance,
+			       enum tracefs_option_id id, bool set)
+{
+	char *set_str = set ? "1" : "0";
+	char file[PATH_MAX];
+	const char *name;
+
+	name = tracefs_option_name(id);
+	if (!name)
+		return -1;
+
+	snprintf(file, PATH_MAX, "options/%s", name);
+	if (strlen(set_str) != tracefs_instance_file_write(instance, file, set_str))
+		return -1;
+	return 0;
+}
+
+/**
+ * tracefs_option_enable - Enable trace option
+ * @instance: ftrace instance, can be NULL for the top instance
+ * @id: trace option id
+ *
+ * Returns -1 in case of an error or 0 otherwise
+ */
+int tracefs_option_enable(struct tracefs_instance *instance, enum tracefs_option_id id)
+{
+	return trace_config_option(instance, id, true);
+}
+
+/**
+ * tracefs_option_diasble - Disable trace option
+ * @instance: ftrace instance, can be NULL for the top instance
+ * @id: trace option id
+ *
+ * Returns -1 in case of an error or 0 otherwise
+ */
+int tracefs_option_diasble(struct tracefs_instance *instance, enum tracefs_option_id id)
+{
+	return trace_config_option(instance, id, false);
+}
+
+/**
+ * tracefs_option_is_supported - Check if an option is supported
+ * @instance: ftrace instance, can be NULL for the top instance
+ * @id: trace option id
+ *
+ * Returns true if an option with given id is supported by the system, false if
+ * it is not supported.
+ */
+bool tracefs_option_is_supported(struct tracefs_instance *instance, enum tracefs_option_id id)
+{
+	const char *name = tracefs_option_name(id);
+	char file[PATH_MAX];
+
+	if (!name)
+		return false;
+	snprintf(file, PATH_MAX, "options/%s", name);
+	return tracefs_file_exists(instance, file);
+}
+
+/**
+ * tracefs_option_is_enabled - Check if an option is enabled in given instance
+ * @instance: ftrace instance, can be NULL for the top instance
+ * @id: trace option id
+ *
+ * Returns true if an option with given id is enabled in the given instance,
+ * false if it is not enabled.
+ */
+bool tracefs_option_is_enabled(struct tracefs_instance *instance, enum tracefs_option_id id)
+{
+	const char *name = tracefs_option_name(id);
+	char file[PATH_MAX];
+	long long res;
+
+	if (!name)
+		return false;
+	snprintf(file, PATH_MAX, "options/%s", name);
+	if (!tracefs_instance_file_read_number(instance, file, &res) && res)
+		return true;
+
+	return false;
+}
+
+/**
+ * tracefs_option_is_set - Check if given option is set in the bitmask
+ * @options: Options bitmask
+ * @id: trace option id
+ *
+ * Returns true if an option with given id is set in the bitmask,
+ * false if it is not set.
+ */
+bool tracefs_option_is_set(struct tracefs_options_mask *options,
+			   enum tracefs_option_id id)
+{
+	if (id > TRACEFS_OPTION_INVALID)
+		return options->mask & (1ULL << (id - 1));
+	return false;
+}
diff --git a/src/tracefs-tools.c b/src/tracefs-tools.c
index 11a4c8c..8f763a4 100644
--- a/src/tracefs-tools.c
+++ b/src/tracefs-tools.c
@@ -19,54 +19,6 @@
 
 #define TRACE_CTRL	"tracing_on"
 
-struct tracefs_options_mask {
-	unsigned long long	mask;
-};
-
-static const char * const options_map[] = {
-	"unknown",
-	"annotate",
-	"bin",
-	"blk_cgname",
-	"blk_cgroup",
-	"blk_classic",
-	"block",
-	"context-info",
-	"disable_on_free",
-	"display-graph",
-	"event-fork",
-	"funcgraph-abstime",
-	"funcgraph-cpu",
-	"funcgraph-duration",
-	"funcgraph-irqs",
-	"funcgraph-overhead",
-	"funcgraph-overrun",
-	"funcgraph-proc",
-	"funcgraph-tail",
-	"func_stack_trace",
-	"function-fork",
-	"function-trace",
-	"graph-time",
-	"hex",
-	"irq-info",
-	"latency-format",
-	"markers",
-	"overwrite",
-	"pause-on-trace",
-	"printk-msg-only",
-	"print-parent",
-	"raw",
-	"record-cmd",
-	"record-tgid",
-	"sleep-time",
-	"stacktrace",
-	"sym-addr",
-	"sym-offset",
-	"sym-userobj",
-	"trace_printk",
-	"userstacktrace",
-	"verbose" };
-
 static int trace_on_off(int fd, bool on)
 {
 	const char *val = on ? "1" : "0";
@@ -159,221 +111,3 @@ int tracefs_trace_off_fd(int fd)
 		return -1;
 	return trace_on_off(fd, false);
 }
-
-/**
- * tracefs_option_name - Get trace option name from id
- * @id: trace option id
- *
- * Returns string with option name, or "unknown" in case of not known option id.
- * The returned string must *not* be freed.
- */
-const char *tracefs_option_name(enum tracefs_option_id id)
-{
-	/* Make sure options map contains all the options */
-	BUILD_BUG_ON(ARRAY_SIZE(options_map) != TRACEFS_OPTION_MAX);
-
-	if (id < TRACEFS_OPTION_MAX)
-		return options_map[id];
-
-	return options_map[0];
-}
-
-/**
- * tracefs_option_id - Get trace option ID from name
- * @name: trace option name
- *
- * Returns trace option ID or TRACEFS_OPTION_INVALID in case of an error or
- * unknown option name.
- */
-enum tracefs_option_id tracefs_option_id(const char *name)
-{
-	int i;
-
-	if (!name)
-		return TRACEFS_OPTION_INVALID;
-
-	for (i = 0; i < TRACEFS_OPTION_MAX; i++) {
-		if (strlen(name) == strlen(options_map[i]) &&
-		    !strcmp(options_map[i], name))
-			return i;
-	}
-
-	return TRACEFS_OPTION_INVALID;
-}
-
-static void tracefs_option_set(struct tracefs_options_mask *options,
-			       enum tracefs_option_id id)
-{
-	if (options && id > TRACEFS_OPTION_INVALID)
-		options->mask |= (1ULL << (id - 1));
-}
-
-static struct tracefs_options_mask *trace_get_options(struct tracefs_instance *instance,
-						      bool enabled)
-{
-	struct tracefs_options_mask *bitmask;
-	enum tracefs_option_id id;
-	char file[PATH_MAX];
-	struct dirent *dent;
-	char *dname = NULL;
-	DIR *dir = NULL;
-	long long val;
-
-	bitmask = calloc(1, sizeof(struct tracefs_options_mask));
-	if (!bitmask)
-		return NULL;
-	dname = tracefs_instance_get_file(instance, "options");
-	if (!dname)
-		goto error;
-	dir = opendir(dname);
-	if (!dir)
-		goto error;
-
-	while ((dent = readdir(dir))) {
-		if (*dent->d_name == '.')
-			continue;
-		if (enabled) {
-			snprintf(file, PATH_MAX, "options/%s", dent->d_name);
-			if (tracefs_instance_file_read_number(instance, file, &val) != 0 ||
-			    val != 1)
-				continue;
-		}
-		id = tracefs_option_id(dent->d_name);
-		if (id != TRACEFS_OPTION_INVALID)
-			tracefs_option_set(bitmask, id);
-	}
-	closedir(dir);
-	tracefs_put_tracing_file(dname);
-
-	return bitmask;
-
-error:
-	if (dir)
-		closedir(dir);
-	tracefs_put_tracing_file(dname);
-	free(bitmask);
-	return NULL;
-}
-
-/**
- * tracefs_options_get_supported - Get all supported trace options in given instance
- * @instance: ftrace instance, can be NULL for the top instance
- *
- * Returns allocated bitmask structure with all trace options, supported in given
- * instance, or NULL in case of an error. The returned structure must be freed with free()
- */
-struct tracefs_options_mask *tracefs_options_get_supported(struct tracefs_instance *instance)
-{
-	return trace_get_options(instance, false);
-}
-
-/**
- * tracefs_options_get_enabled - Get all currently enabled trace options in given instance
- * @instance: ftrace instance, can be NULL for the top instance
- *
- * Returns allocated bitmask structure with all trace options, enabled in given
- * instance, or NULL in case of an error. The returned structure must be freed with free()
- */
-struct tracefs_options_mask *tracefs_options_get_enabled(struct tracefs_instance *instance)
-{
-	return trace_get_options(instance, true);
-}
-
-static int trace_config_option(struct tracefs_instance *instance,
-			       enum tracefs_option_id id, bool set)
-{
-	char *set_str = set ? "1" : "0";
-	char file[PATH_MAX];
-	const char *name;
-
-	name = tracefs_option_name(id);
-	if (!name)
-		return -1;
-
-	snprintf(file, PATH_MAX, "options/%s", name);
-	if (strlen(set_str) != tracefs_instance_file_write(instance, file, set_str))
-		return -1;
-	return 0;
-}
-
-/**
- * tracefs_option_enable - Enable trace option
- * @instance: ftrace instance, can be NULL for the top instance
- * @id: trace option id
- *
- * Returns -1 in case of an error or 0 otherwise
- */
-int tracefs_option_enable(struct tracefs_instance *instance, enum tracefs_option_id id)
-{
-	return trace_config_option(instance, id, true);
-}
-
-/**
- * tracefs_option_diasble - Disable trace option
- * @instance: ftrace instance, can be NULL for the top instance
- * @id: trace option id
- *
- * Returns -1 in case of an error or 0 otherwise
- */
-int tracefs_option_diasble(struct tracefs_instance *instance, enum tracefs_option_id id)
-{
-	return trace_config_option(instance, id, false);
-}
-
-/**
- * tracefs_option_is_supported - Check if an option is supported
- * @instance: ftrace instance, can be NULL for the top instance
- * @id: trace option id
- *
- * Returns true if an option with given id is supported by the system, false if
- * it is not supported.
- */
-bool tracefs_option_is_supported(struct tracefs_instance *instance, enum tracefs_option_id id)
-{
-	const char *name = tracefs_option_name(id);
-	char file[PATH_MAX];
-
-	if (!name)
-		return false;
-	snprintf(file, PATH_MAX, "options/%s", name);
-	return tracefs_file_exists(instance, file);
-}
-
-/**
- * tracefs_option_is_enabled - Check if an option is enabled in given instance
- * @instance: ftrace instance, can be NULL for the top instance
- * @id: trace option id
- *
- * Returns true if an option with given id is enabled in the given instance,
- * false if it is not enabled.
- */
-bool tracefs_option_is_enabled(struct tracefs_instance *instance, enum tracefs_option_id id)
-{
-	const char *name = tracefs_option_name(id);
-	char file[PATH_MAX];
-	long long res;
-
-	if (!name)
-		return false;
-	snprintf(file, PATH_MAX, "options/%s", name);
-	if (!tracefs_instance_file_read_number(instance, file, &res) && res)
-		return true;
-
-	return false;
-}
-
-/**
- * tracefs_option_is_set - Check if given option is set in the bitmask
- * @options: Options bitmask
- * @id: trace option id
- *
- * Returns true if an option with given id is set in the bitmask,
- * false if it is not set.
- */
-bool tracefs_option_is_set(struct tracefs_options_mask *options,
-			   enum tracefs_option_id id)
-{
-	if (id > TRACEFS_OPTION_INVALID)
-		return options->mask & (1ULL << (id - 1));
-	return false;
-}
