diff --git a/.Rbuildignore b/.Rbuildignore
index 840b0ed..2e8af36 100644
--- a/.Rbuildignore
+++ b/.Rbuildignore
@@ -12,3 +12,5 @@
 node_modules$
 package-lock\.json$
 package\.json$
+^doc$
+^Meta$
diff --git a/.gitignore b/.gitignore
index 038a8da..9c9ade7 100644
--- a/.gitignore
+++ b/.gitignore
@@ -4,3 +4,5 @@
 .Rdata
 .httr-oauth
 .DS_Store
+/doc/
+/Meta/
diff --git a/NAMESPACE b/NAMESPACE
index 1d5cea2..105fdd0 100644
--- a/NAMESPACE
+++ b/NAMESPACE
@@ -1,15 +1,16 @@
 # Generated by roxygen2: do not edit by hand
 
+S3method(edges,tbl_kgx)
 S3method(explode,tbl_kgx)
-S3method(select_nodes,monarch_kg)
+S3method(nodes,tbl_kgx)
 export(cypher_query)
 export(cypher_query_df)
 export(edges)
+export(explode)
 export(fetch_edges)
 export(monarch_search)
 export(nodes)
 export(query_ids)
-export(select_nodes)
 export(summarize_neighborhood)
 export(summarize_neighborhood_edges)
 export(summarize_neighborhood_nodes)
@@ -17,9 +18,7 @@ export(tbl_kgx)
 import(dplyr)
 import(tidygraph)
 importFrom(assertthat,assert_that)
-importFrom(dplyr,mutate)
 importFrom(neo2R,cypher)
 importFrom(tibble,tibble)
-importFrom(tidygraph,activate)
 importFrom(tidygraph,as_tibble)
 importFrom(tidygraph,tbl_graph)
diff --git a/R/cypher_query.R b/R/cypher_query.R
index 994daab..4d3a644 100644
--- a/R/cypher_query.R
+++ b/R/cypher_query.R
@@ -6,10 +6,6 @@
 #' @param cats_list A list of vectors of categories.
 #' @param cats_prefs An ordered preference list over categories.
 #' @return A vector of normalized categories.
-#' @examples
-#' categories_list <- list(c("A", "B", "C"), c("D", "E", "F"))
-#' categories_prefs <- c("B", "E", "A", "D", "C", "F")
-#' normalize_categories(categories_list, categories_prefs)
 normalize_categories <- function(cats_list, cats_prefs) {
 	normed <- unlist(lapply(cats_list, function(categories) {
 		positions <- match(categories, cats_prefs)
diff --git a/R/fetch.R b/R/fetch.R
index 4b0ca57..06e1f4d 100644
--- a/R/fetch.R
+++ b/R/fetch.R
@@ -15,7 +15,7 @@
 #'   fetch_edges(predicates = "biolink:has_phenotype", result_categories = "biolink:PhenotypicFeature")
 #'
 #' ancestors <- g %>%
-#'  fetch_edges(predicates = "biolink:subclass_of", transitive = TRUE)
+#'  fetch_edges(predicates = "biolink:subclass_of", transitive = TRUE, direction = "out")
 #'
 #' @import tidygraph
 #' @import dplyr
diff --git a/R/select_nodes.R b/R/select_nodes.R
deleted file mode 100644
index 3ec7ceb..0000000
--- a/R/select_nodes.R
+++ /dev/null
@@ -1,44 +0,0 @@
-#' Select nodes from a graph
-#'
-#' This is the generic function for `select_nodes`, which selects nodes from a graph
-#' based on specific conditions. The conditions are specified through the `...` argument.
-#' The actual implementation of the function depends on the class of the `graph` object,
-#' and should be defined in specific methods for the `select_nodes` function.
-#'
-#' @param graph A graph object from which nodes should be selected.
-#'   The specific class of this object determines the method that will be used.
-#' @param ... Further arguments defining the conditions for selecting nodes.
-#'   These are passed to the specific `select_nodes` method for the class of `graph`.
-#'
-#' @return A graph with a subset of nodes selected.
-#'
-#' @export
-select_nodes <- function(graph, ...) {
-	UseMethod("select_nodes")
-}
-
-#' Select nodes from a `tbl_kgx` graph
-#'
-#' This is the method for `select_nodes` specific to `monarch_kg` graph objects.
-#' It selects nodes based on the conditions specified in the `...` argument,
-#' which are passed to `dplyr::filter`.
-#'
-#' @param graph An object of class `tbl_kgx` from which nodes should be selected.
-#' @param ... Further arguments passed to `dplyr::filter`. These define the conditions
-#'   for selecting nodes based on their properties.
-#'
-#' @return A `tbl_kgx` graph object with the nodes selected.
-#'
-#' @examples
-#' g <- monarch_search("Diabetes")
-#' g <- select_nodes(g, !is.na(inheritance_name) | id == "MONDO:0004782")
-#'
-#' @importFrom tidygraph activate
-#' @importFrom dplyr mutate
-#' @export
-select_nodes.monarch_kg <- function(graph, ...) {
-	expr <- rlang::enexprs(...)
-
-	res <- mutate(activate(graph, nodes), selected = !! expr[[1]])
-	return(res)
-}
diff --git a/R/utils.R b/R/utils.R
index 8f49c1b..bf42d3c 100644
--- a/R/utils.R
+++ b/R/utils.R
@@ -1,6 +1,7 @@
 #' Get tbl_kgx graph nodes table.
 #'
 #' @importFrom tidygraph as_tibble
+#' @export
 #' @examples
 #' g <- monarch_search("fanconi anemia", limit = 1)
 #' print(nodes(g))
@@ -11,6 +12,7 @@ nodes.tbl_kgx <- function(x, ...) {
 #' Get tbl_kgx graph edges table.
 #'
 #' @importFrom tidygraph as_tibble
+#' @export
 #' @examples
 #' g <- monarch_search("fanconi anemia", limit = 1)
 #' print(edges(g))
@@ -46,7 +48,7 @@ edges <- function(x, ...) {
   UseMethod("edges")
 }
 
-
+#' @export
 explode <- function(x, ...) {
   UseMethod("explode")
 }
diff --git a/man/fetch_edges.Rd b/man/fetch_edges.Rd
index 6e663df..1c5ae0e 100644
--- a/man/fetch_edges.Rd
+++ b/man/fetch_edges.Rd
@@ -38,6 +38,6 @@ phenos <- g \%>\%
   fetch_edges(predicates = "biolink:has_phenotype", result_categories = "biolink:PhenotypicFeature")
 
 ancestors <- g \%>\%
- fetch_edges(predicates = "biolink:subclass_of", transitive = TRUE)
+ fetch_edges(predicates = "biolink:subclass_of", transitive = TRUE, direction = "out")
 
 }
diff --git a/man/normalize_categories.Rd b/man/normalize_categories.Rd
index 5c92609..9919455 100644
--- a/man/normalize_categories.Rd
+++ b/man/normalize_categories.Rd
@@ -18,8 +18,3 @@ A vector of normalized categories.
 This function takes a list of vectors of categories and an ordered preference list over categories.
 It selects the most preferred category from each vector, or the first category if no preferred categories are included.
 }
-\examples{
-categories_list <- list(c("A", "B", "C"), c("D", "E", "F"))
-categories_prefs <- c("B", "E", "A", "D", "C", "F")
-normalize_categories(categories_list, categories_prefs)
-}
diff --git a/man/select_nodes.Rd b/man/select_nodes.Rd
deleted file mode 100644
index 6c80541..0000000
--- a/man/select_nodes.Rd
+++ /dev/null
@@ -1,24 +0,0 @@
-% Generated by roxygen2: do not edit by hand
-% Please edit documentation in R/select_nodes.R
-\name{select_nodes}
-\alias{select_nodes}
-\title{Select nodes from a graph}
-\usage{
-select_nodes(graph, ...)
-}
-\arguments{
-\item{graph}{A graph object from which nodes should be selected.
-The specific class of this object determines the method that will be used.}
-
-\item{...}{Further arguments defining the conditions for selecting nodes.
-These are passed to the specific \code{select_nodes} method for the class of \code{graph}.}
-}
-\value{
-A graph with a subset of nodes selected.
-}
-\description{
-This is the generic function for \code{select_nodes}, which selects nodes from a graph
-based on specific conditions. The conditions are specified through the \code{...} argument.
-The actual implementation of the function depends on the class of the \code{graph} object,
-and should be defined in specific methods for the \code{select_nodes} function.
-}
diff --git a/man/select_nodes.monarch_kg.Rd b/man/select_nodes.monarch_kg.Rd
deleted file mode 100644
index da73d33..0000000
--- a/man/select_nodes.monarch_kg.Rd
+++ /dev/null
@@ -1,27 +0,0 @@
-% Generated by roxygen2: do not edit by hand
-% Please edit documentation in R/select_nodes.R
-\name{select_nodes.monarch_kg}
-\alias{select_nodes.monarch_kg}
-\title{Select nodes from a \code{tbl_kgx} graph}
-\usage{
-\method{select_nodes}{monarch_kg}(graph, ...)
-}
-\arguments{
-\item{graph}{An object of class \code{tbl_kgx} from which nodes should be selected.}
-
-\item{...}{Further arguments passed to \code{dplyr::filter}. These define the conditions
-for selecting nodes based on their properties.}
-}
-\value{
-A \code{tbl_kgx} graph object with the nodes selected.
-}
-\description{
-This is the method for \code{select_nodes} specific to \code{monarch_kg} graph objects.
-It selects nodes based on the conditions specified in the \code{...} argument,
-which are passed to \code{dplyr::filter}.
-}
-\examples{
-g <- monarch_search("Diabetes")
-g <- select_nodes(g, !is.na(inheritance_name) | id == "MONDO:0004782")
-
-}