diff --git a/workspace/02_NHD_navigate.Rmd b/workspace/02_NHD_navigate.Rmd
index faa5ab54503095e0654b2efca622085fd395579f..238b5aafd99e3961530901a43e5673fe0c0f697c 100644
--- a/workspace/02_NHD_navigate.Rmd
+++ b/workspace/02_NHD_navigate.Rmd
@@ -48,7 +48,7 @@ atts <- readRDS(file.path(data_paths$nhdplus_dir, "nhdplus_flowline_attributes.r
 if(needs_layer(temp_gpkg, nav_poi_layer)) {
   
    nhd <- read_sf(nav_gpkg, nhd_flowline)
-   try(nhd <- select(nhd, -c(minNet, WB, struct_POI, struct_Net, POI_ID)))
+   try(nhd <- select(nhd, -c(minNet, WB, struct_POI, struct_Net, POI_ID)), silent = TRUE)
   
   # HUC02 includes some 
   if(vpu == "02"){
@@ -237,7 +237,7 @@ if(all(is.na(tmp_POIs$Type_WBOut))) {
   # Get NHDArea and HI-Res waterbodies for ResOpsUS locaitons
   WBs_VPU_areaHR <- HR_Area_coms(nhd, WBs_VPU, data_paths)
   # If the return is not NA
-  if(!is.na(WBs_VPU_areaHR)){
+  if(inherits(WBs_VPU_areaHR, "list")){
     # Attribute flowlines that intersect NHDARea and/or NHD HR waterbodies with 
     #           waterbody COMIDs
     nhd <- nhd %>%
@@ -264,10 +264,14 @@ if(all(is.na(tmp_POIs$Type_WBOut))) {
                       select(wb_outlet_events, COMID, WBAREACOMI))
     }
     
+    WBs_VPU_areaHR$wb <- nhdplusTools::st_compatibalize(
+      WBs_VPU_areaHR$wb, WBs_VPU)
+    
     # Append NHDArea and NHDHR waterbodies to waterbody layer
     WBs_VPU <- data.table::rbindlist(list(WBs_VPU, WBs_VPU_areaHR$wb), fill = TRUE) %>%
-      st_as_sf() %>%
-      st_make_valid()
+      st_as_sf()
+    
+    st_geometry(WBs_VPU) <- st_make_valid(st_geometry(WBs_VPU))
   }
     
   # Write out waterbodies
@@ -288,9 +292,9 @@ if(all(is.na(tmp_POIs$Type_WBOut))) {
   }
     
   write_sf(nhd, nav_gpkg, nhd_flowline)
-  write_sf(tmp_POIs, nav_gpkg, nav_poi_layer)
+  write_sf(tmp_POIs, temp_gpkg, nav_poi_layer)
 } else {
-  tmp_POIs <- read_sf(nav_gpkg, nav_poi_layer)
+  tmp_POIs <- read_sf(temp_gpkg, nav_poi_layer)
   nhd <- read_sf(nav_gpkg, nhd_flowline)
   WBs_VPU <- read_sf(nav_gpkg, WBs_layer)
   resops_POIs_df <- read.csv(file.path("data/reservoir_Data", paste0("resops_POIs_",vpu,".csv")))
@@ -637,6 +641,7 @@ if(needs_layer(temp_gpkg, nsegments_layer)) {
     mutate(struct_POI = ifelse(COMID %in% strucFeat$struc_POIs$COMID, 1, 0),
            struct_Net = ifelse(COMID %in% strucFeat$structnet$COMID, 1, 0))
 
+  write_sf(nhd_Final, nav_gpkg, nhd_flowline)
   write_sf(nsegments, temp_gpkg, nsegments_layer)
 } else {
   # Read in NHDPlusV2 flowline simple features and filter by vector processing unit (VPU)
diff --git a/workspace/R/config.R b/workspace/R/config.R
index 1b7a49f0ca91a0f85ca64981112ce2683887a04a..fc4fcbca5eff5d0967e203e2009260b804715695 100644
--- a/workspace/R/config.R
+++ b/workspace/R/config.R
@@ -81,7 +81,7 @@ final_poi_layer <- "POIs"
 # Settings for refactor workflow
 split_meters <- 10000
 combine_meters <- 1000
-min_da_km <- 20
+min_da_km <- 3
 
 aggregate_da_thresh_sqkm <- 1
 
diff --git a/workspace/R/utils.R b/workspace/R/utils.R
index 61cf195a5c0190c9a0fe04f8dd6d26ae8061c882..4f187dffe8876d204230636fdcec2f948a75a759 100644
--- a/workspace/R/utils.R
+++ b/workspace/R/utils.R
@@ -441,10 +441,13 @@ merge_refactor <- function(rpus, rpu_vpu_out,
   }, out = out), names(out[[1]]))
   
   # blow up so we have unique COMIDs to join on.
+  # need to keep the top most of any splits (the .1 variety)
+  # this makes sure out toCOMID assignments go to the right new id.
   long_form <- st_drop_geometry(out[[reconciled_layer]]) %>%
     select(newID, member_COMID) %>%
     mutate(member_COMID = strsplit(member_COMID, ",")) %>%
     tidyr::unnest(cols = member_COMID) %>%
+    filter(grepl("\\.1$", member_COMID) | !grepl("\\.", member_COMID)) %>%
     mutate(NHDPlusV2_COMID = as.integer(member_COMID)) %>%
     select(-member_COMID, update_newtoID = newID)
   
diff --git a/workspace/runners/run_one_R.R b/workspace/runners/run_one_R.R
index ab7ab168798275b730b3a39fb54ec02722bdf6b0..2d4c472441549a8de52b05ec2e6fba5a12f32280 100644
--- a/workspace/runners/run_one_R.R
+++ b/workspace/runners/run_one_R.R
@@ -10,8 +10,9 @@ source("R/config.R")
 source("R/utils.R")
 
 ref <- paste0("cache/reference_", VPU, ".gpkg")
-
+nav <- paste0("cache/nav_", VPU, ".gpkg")
 unlink(ref)
+unlink(nav)
 
 for(r in rpu_codes$rpuid) {
   unlink(paste0("cache/", r, "_refactor.gpkg"))