diff --git a/workspace/02_HI_navigate.Rmd b/workspace/02_HI_navigate.Rmd
index 1af53d2a52d523a5a8b1b3fcf9de0b988c0d0fac..8e17e7066e36e45e87db049cab71ce2127b6b730 100644
--- a/workspace/02_HI_navigate.Rmd
+++ b/workspace/02_HI_navigate.Rmd
@@ -23,7 +23,7 @@ library(hyRefactor)
 library(tidyr)
 library(hyfabric)
 
-vpu <- "20"
+vpu <- VPU <- "20"
 
 # Load data paths
 data_paths <- jsonlite::read_json(file.path("cache", "data_paths.json"))
@@ -34,6 +34,8 @@ source("R/NHD_navigate.R")
 source("R/hyRefactor_funs.R")
 source("R/config.R")
 source("R/ExCONUS_config.R")
+
+atts <- readRDS(file.path(data_paths$islands_dir, "nhdplus_flowline_attributes.rds"))
 ```
 
 Define NHD dataset to use for refactoring and discretization.  RPUs 20f and 20g had NHD attribution that behaved differently
@@ -101,7 +103,7 @@ if(needs_layer(nav_gpkg, nhd_flowline)) {
     mutate(dend = ifelse(COMID %in% dend_COM$COMID, 1, 0))
 
   # Bring in catchments
-  nhd_cats <- readRDS(staged_nhdplus$catchment) %>%
+  nhd_cats <- readRDS(staged_nhdplus_islands$catchment) %>%
     st_transform(crs) %>%
     st_make_valid()
 
@@ -423,6 +425,67 @@ if(all(is.na(nav_POIs$Type_NID))) {
 mapview(filter(nav_POIs, !is.na(Type_NID)))
 ```
 
+
+This chunk breaks up potential aggregated segments where the elevation range of the are contributing to the segment exceeds 500-m
+```{r Elevation Break POIs}
+# derive incremental segments from POIs
+inc_segs <- segment_increment(filter(nhd_prep, minNet == 1), filter(st_drop_geometry(nhd),
+                    COMID %in% nav_POIs$COMID, COMID %in% filter(nhd_prep, minNet == 1)$COMID)) %>%
+  # bring over VAA data
+  inner_join(select(atts, COMID, LENGTHKM, MAXELEVSMO, MINELEVSMO, AreaSqKM, TotDASqKM), by = c("COMID" = "ComID")) 
+
+  # Build dataframe for creation of points based on breaks
+elev_pois_split <- inc_segs %>%
+  group_by(POI_ID) %>%
+  # Get elevation info
+  mutate(MAXELEVSMO = na_if(MAXELEVSMO, -9998), MINELEVSMO = na_if(MINELEVSMO, -9998), 
+         elev_diff_seg = max(MAXELEVSMO) - min(MINELEVSMO)) %>%
+  # Filter out to those incremental segments that need splitting above the defined elevation threshold
+  filter((max(MAXELEVSMO) - min(MINELEVSMO)) > (elev_diff * 100)) #%>%
+  # Do not aggregate on fake lfowlines
+  filter(AreaSqKM > 0, TotDASqKM > max_elev_TT_DA) #%>% 
+  # Order from upstream to downstream
+  arrange(desc(Hydroseq)) #%>%
+  # Get attributes used for splitting
+  # csum_length = cumulative length US to DS along segment, cumsum_elev = cumulative US to DS elev diff along segment
+  # inc_elev = elevation range of each segment
+  # iter = estimated number of times we'd need to split existing agg flowlines, or number of rows in set
+  mutate(csum_length = cumsum(LENGTHKM),
+         inc_elev = cumsum(MAXELEVSMO - MINELEVSMO),
+         #nc_elev_diff = c(inc_elev[1], (inc_elev - lag(inc_elev))[-1]),
+         iter = min(round(max(inc_elev) / (elev_diff * 100)), n()),
+         elev_POI_ID = NA) %>%
+  # Remove segments we can't break
+  filter(iter > 0, n() > 1) %>%
+  # Track original iteration number
+  mutate(orig_iter = iter) %>%
+  ungroup() 
+
+if(nrow(elev_pois_split) > 0) {
+  
+  # For reach iteration
+  elev_POIs <- do.call("rbind", lapply(unique(elev_pois_split$POI_ID), split_elev, 
+                                      elev_pois_split, elev_diff*100, max_elev_TT_DA)) %>%
+    filter(!elev_POI_ID %in% tmp_POIs$COMID, COMID == elev_POI_ID) %>%
+    mutate(Type_Elev = 1) %>%
+    select(COMID, Type_Elev) %>%
+    unique()
+  
+  if(nrow(elev_POIs) > 0){
+    tmp_POIs <- POI_creation(select(elev_POIs, COMID, Type_Elev), nhd, "Elev") %>%
+      addType(., tmp_POIs, "Elev")
+  } 
+  
+  write_sf(tmp_POIs, nav_gpkg, nav_poi_layer)
+} else {
+  tmp_POIs <- read_sf(nav_gpkg, nav_poi_layer) 
+  nhd <- read_sf(nav_gpkg, nhd_flowline)
+}
+
+if(!all(is.na(tmp_POIs$Type_Elev)))
+  mapview(filter(tmp_POIs, Type_Elev == 1), layer.name = "Elevation break POIs", col.regions = "blue") 
+```
+
 Clean up and map final POIs
 
 ```{r}
diff --git a/workspace/05_hyRefactor_HI.Rmd b/workspace/05_hyRefactor_HI.Rmd
index fd6c7ac2e39985488f190b1388ddb53afa0294a5..87d5a95bdd93c4279831c58068584093a0a0e84d 100644
--- a/workspace/05_hyRefactor_HI.Rmd
+++ b/workspace/05_hyRefactor_HI.Rmd
@@ -86,7 +86,7 @@ POIs <- read_sf(nav_gpkg, final_poi_layer) %>%
 if (rpu_code == "20f"){
   new_outlet_POI_atts <- filter(st_drop_geometry(nhd), COMID == 800001119) %>%
     select(COMID, Type_Conf_new = LevelPathI)
-  
+
   POIs <- POIs %>%
     left_join(new_outlet_POI_atts, by = "COMID") %>%
     mutate(Type_Conf = ifelse(!is.na(Type_Conf_new), Type_Conf_new, Type_Conf)) %>%
@@ -126,12 +126,13 @@ avoid <- dplyr::filter(nhd, (sqrt(AreaSqKM) / LENGTHKM) > 3 & AreaSqKM > 1)
 # Verified that it works on all RPUS
 events <- read_sf(nav_gpkg, gage_events_layer) %>%
   #filter(Split == 1) %>%
-  inner_join(select(st_drop_geometry(filter(nhd, refactor == 1)), AreaSqKM, LENGTHKM, COMID, FromMeas, ToMeas), by = "COMID") %>%
+  inner_join(select(st_drop_geometry(nhd), AreaSqKM, LENGTHKM, COMID, FromMeas, ToMeas), by = "COMID") %>%
   #filter(AreaSqKM > 1 & LENGTHKM > (combine_meters / 250)) %>%
-  filter(site_no == "16265600" | REACH_meas - FromMeas > 5 & AreaSqKM > 0.5 & ToMeas - REACH_meas > 5) %>% 
+  filter(site_no %in% c("16265600", "16759600", "16700600", "16682000", "16681000") | 
+           REACH_meas - FromMeas > 5 & AreaSqKM > 0.5 & ToMeas - REACH_meas > 5) %>% 
   select(site_no, COMID, REACHCODE, REACH_meas) %>%
   # Events cannot be in terminal POIs, code seems to ignore the command not to split/combine those flowlines
-  filter(!COMID %in% filter(outlets, type == "terminal")$COMID) %>%
+  #filter(!COMID %in% filter(outlets, type == "terminal")$COMID) %>%
   filter(!COMID %in% avoid$COMID)
 
 # write out events
@@ -221,7 +222,7 @@ if(needs_layer(out_refac_gpkg, divide_layer)) {
                                          fline_rec = reconciled,
                                          fdr = fdr,
                                          fac = fac,
-                                         para = para_reconcile, 
+                                         para = 6, 
                                          cache = cache_split,
                                          keep = NULL,
                                          vector_crs = crs) 
diff --git a/workspace/R/ExCONUS_config.R b/workspace/R/ExCONUS_config.R
index 37ea5fc72f7334406584634890ab8b4a9a39ba21..9888dbf9c8383530ad4782b9e48b3bf2d36c54c7 100644
--- a/workspace/R/ExCONUS_config.R
+++ b/workspace/R/ExCONUS_config.R
@@ -25,6 +25,8 @@ if(vpu == "20"){
   min_da_km <- 5
   split_meters <- 2500
   combine_meters <- 500
+  elev_diff <- 300
+  max_elev_DA <- 1.5
 } else {
   # Cusomizations for AK
   crs <- 3338