TODO Document function inputs/outputs. Use roxygen2 @exports to generate NAMESPACE only for public-facing functions