diff --git a/NAMESPACE b/NAMESPACE
index 09a0ba0258653f4ff26dbe939c7ed74b63c596da..8109f84198c681459fa01e11a48f1c73b23615a0 100644
--- a/NAMESPACE
+++ b/NAMESPACE
@@ -24,6 +24,7 @@ export(readNWISuv)
 export(readWQPdata)
 export(readWQPqw)
 export(renameNWISColumns)
+export(setAccess)
 export(stateCd)
 export(stateCdLookup)
 export(whatNWISdata)
diff --git a/R/AAA.R b/R/AAA.R
new file mode 100644
index 0000000000000000000000000000000000000000..4384113b4e52233558527b151ddfd517be42ae6b
--- /dev/null
+++ b/R/AAA.R
@@ -0,0 +1,4 @@
+pkg.env <- new.env()
+.onLoad = function(libname, pkgname){
+  suppressMessages(setAccess('public'))
+}
\ No newline at end of file
diff --git a/R/constructNWISURL.r b/R/constructNWISURL.r
index e0c288c4e1f9c4431b83eb1390e88e98fc78f34f..c20ce648e70008a929b892ae04b25dd2306d30b5 100644
--- a/R/constructNWISURL.r
+++ b/R/constructNWISURL.r
@@ -149,9 +149,6 @@ constructNWISURL <- function(siteNumber,parameterCd="00060",startDate="",endDate
           
           if ("uv"==service) {
             service <- "iv"
-            baseURL <- paste0("http://nwis.waterservices.usgs.gov/nwis/",service)  
-          } else {
-            baseURL <- paste0("http://waterservices.usgs.gov/nwis/",service)  
           }
           
           format <- match.arg(format, c("xml","tsv","wml1","wml2","rdb"))
@@ -174,30 +171,29 @@ constructNWISURL <- function(siteNumber,parameterCd="00060",startDate="",endDate
             }
           )
 
-          
-          url <- paste0(baseURL,"/?site=",siteNumber, "&format=", formatURL)
+          url <- drURL(service, Access=pkg.env$access, site=siteNumber, format=formatURL)
           
           if("gwlevels"!= service){
-            url <- paste0(url, "&ParameterCd=",parameterCd)
+            url <- appendDrURL(url, ParameterCd=parameterCd)
           }
           
           if("dv"==service) {
             if(length(statCd) > 1){
               statCd <- paste(statCd, collapse=",")
             }            
-            url <- paste0(url, "&StatCd=", statCd)
+            url <- appendDrURL(url, StatCd=statCd)
           }
           
           if (nzchar(startDate)) {
-            url <- paste0(url,"&startDT=",startDate)
+            url <- appendDrURL(url, startDT=startDate)
           } else {
             startorgin <- "1851-01-01"
             if ("iv" == service) startorgin <- "1900-01-01"            
-            url <- paste0(url,"&startDT=",startorgin)
+            url <- appendDrURL(url, startDT=startorgin)
           }
           
           if (nzchar(endDate)) {
-            url <- paste0(url,"&endDT=",endDate)
+            url <- appendDrURL(url, endDT=endDate)
           }
         }
          
diff --git a/R/setAccess.R b/R/setAccess.R
new file mode 100644
index 0000000000000000000000000000000000000000..2e4bb7e2dbc483fd44c96a31267f1638b4833263
--- /dev/null
+++ b/R/setAccess.R
@@ -0,0 +1,59 @@
+#'Set data endpoint
+#'
+#'access Indicate which dataRetrieval access code
+#' you want to use options: \code{c('public','internal')}
+#'
+#' @param access code for data access. Either "public" or "internal"
+#'
+#'@author Luke Winslow, Jordan S Read
+#'
+#'@examples
+#'
+#'\dontrun{
+#'setAccess('internal')
+#'
+#'setAccess('public')
+#'
+#'}
+#'
+#' @export
+setAccess = function(access="public"){
+  
+  access = match.arg(access, c('public','internal'))
+  
+  if(access=="internal"){
+    pkg.env$access = '3'
+    message('setting access to internal')
+  }else {
+    pkg.env$access = '0'
+    message('setting access to public')
+  }
+  
+  pkg.env$waterservices = "http://waterservices.usgs.gov/nwis/site/"
+  pkg.env$iv = "http://nwis.waterservices.usgs.gov/nwis/iv/"
+  pkg.env$dv =  "http://waterservices.usgs.gov/nwis/dv/"
+  pkg.env$gwlevels = "http://waterservices.usgs.gov/nwis/gwlevels/"
+  
+}
+
+drURL <- function(base.name, ..., arg.list=NULL){
+  
+  
+  queryString <- drQueryArgs(..., arg.list=arg.list)
+  #to do: add something to check for redundant params
+  
+  return(paste0(pkg.env[[base.name]], '?', queryString))
+}
+
+drQueryArgs <- function(..., arg.list){
+  args <- append(expand.grid(..., stringsAsFactors = FALSE), arg.list)
+  # get the args into name=value strings
+  keyValues <- paste0(names(args),unname(lapply(args, function(x) paste0('=',x[[1]]))))
+  return(paste(keyValues, collapse='&'))
+}
+
+appendDrURL <- function(url, ..., arg.list=NULL){
+  
+  queryString <- drQueryArgs(..., arg.list=arg.list)
+  return(paste0(url, "&", queryString))
+}
\ No newline at end of file
diff --git a/R/whatNWISData.r b/R/whatNWISData.r
index 2d9c18da1be8eb525b25af1b6578c80fc17e2fba..50067b22ebb23b2ce00d3b994f33d49b69df3871 100644
--- a/R/whatNWISData.r
+++ b/R/whatNWISData.r
@@ -87,8 +87,7 @@ whatNWISdata <- function(siteNumbers,service="all",parameterCd="all",statCd="all
     }
   }
   
-  
-  urlSitefile <- paste("http://waterservices.usgs.gov/nwis/site/?format=rdb&seriesCatalogOutput=true&sites=",siteNumber,sep = "")
+  urlSitefile <- drURL('waterservices', Access=pkg.env$access, format='rdb', seriesCatalogOutput='true',sites=paste(siteNumber))
  
   SiteFile <- importRDB1(urlSitefile, asDateTime = FALSE)
   
diff --git a/R/whatNWISsites.R b/R/whatNWISsites.R
index 49e34e845526c8eb59ed02fa619a9a1c0b159c6a..c7b864aed875a4466876972aba4488f8c8fb8935 100644
--- a/R/whatNWISsites.R
+++ b/R/whatNWISsites.R
@@ -35,14 +35,11 @@ whatNWISsites <- function(...){
   matchReturn <- list(...)
   values <- sapply(matchReturn, function(x) URLencode(as.character(paste(eval(x),collapse=",",sep=""))))
   
-  urlCall <- paste(paste(names(values),values,sep="="),collapse="&")
-  
   names(values)[names(values) == "siteNumber"] <- "sites"
   names(values)[names(values) == "siteNumbers"] <- "sites"
   
-  baseURL <- "http://waterservices.usgs.gov/nwis/site/?format=mapper&"
-  urlCall <- paste(baseURL,
-                   urlCall,sep = "")
+  urlCall <- drURL('waterservices',Access=pkg.env$access, format="mapper", arg.list = values)
+
 
   rawData <- getWebServiceData(urlCall)
 
diff --git a/man/setAccess.Rd b/man/setAccess.Rd
new file mode 100644
index 0000000000000000000000000000000000000000..a8a7822cf7bb28c53ceb6f39624186b3b51a4bc7
--- /dev/null
+++ b/man/setAccess.Rd
@@ -0,0 +1,29 @@
+% Generated by roxygen2: do not edit by hand
+% Please edit documentation in R/setAccess.R
+\name{setAccess}
+\alias{setAccess}
+\title{Set data endpoint}
+\usage{
+setAccess(access = "public")
+}
+\arguments{
+\item{access}{code for data access. Either "public" or "internal"}
+}
+\description{
+access Indicate which dataRetrieval access code
+you want to use options: \code{c('public','internal')}
+}
+\examples{
+
+\dontrun{
+setAccess('internal')
+
+setAccess('public')
+
+}
+
+}
+\author{
+Luke Winslow, Jordan S Read
+}
+
diff --git a/man/whatNWISData.Rd b/man/whatNWISData.Rd
index d236dfb6bc272b328fd1dc40ba3d89ef96b9e4a1..05bb05be6946eb419b95f90f0b5449d56abef30c 100644
--- a/man/whatNWISData.Rd
+++ b/man/whatNWISData.Rd
@@ -1,5 +1,5 @@
 % Generated by roxygen2: do not edit by hand
-% Please edit documentation in R/whatNWISdata.r
+% Please edit documentation in R/whatNWISData.r
 \name{whatNWISdata}
 \alias{whatNWISdata}
 \title{USGS data availability}
diff --git a/man/whatNWISdata.Rd b/man/whatNWISdata.Rd
new file mode 100644
index 0000000000000000000000000000000000000000..05bb05be6946eb419b95f90f0b5449d56abef30c
--- /dev/null
+++ b/man/whatNWISdata.Rd
@@ -0,0 +1,85 @@
+% Generated by roxygen2: do not edit by hand
+% Please edit documentation in R/whatNWISData.r
+\name{whatNWISdata}
+\alias{whatNWISdata}
+\title{USGS data availability}
+\usage{
+whatNWISdata(siteNumbers, service = "all", parameterCd = "all",
+  statCd = "all")
+}
+\arguments{
+\item{siteNumbers}{character USGS site number or multiple sites.}
+
+\item{service}{character. Options are "all", or one or many of "dv"(daily values),
+"uv","rt", or "iv"(unit values), "qw"(water-quality),"sv"(sites visits),"pk"(peak measurements),
+"gw"(groundwater levels), "ad" (sites included in USGS Annual Water Data Reports External Link), 
+"aw" (sites monitored by the USGS Active Groundwater Level Network External Link), "id" (historical 
+instantaneous values)}
+
+\item{parameterCd}{character vector of valid parameter codes to return. Defaults to "all" which will not perform a filter.}
+
+\item{statCd}{character vector of all statistic codes to return. Defaults to "all" which will not perform a filter.}
+}
+\value{
+A data frame with the following columns:
+\tabular{lll}{
+Name \tab Type \tab Description \cr
+agency_cd \tab character \tab The NWIS code for the agency reporting the data\cr
+site_no \tab character \tab The USGS site number \cr
+station_nm \tab character \tab Site name \cr 
+site_tp_cd \tab character \tab Site type \cr
+dec_lat_va \tab numeric \tab Decimal latitude\cr
+dec_long_va \tab numeric \tab Decimal longitude \cr
+coord_acy_cd \tab character \tab Latitude-longitude accuracy \cr
+dec_coord_datum_cd \tab character \tab Decimal Latitude-longitude datum \cr
+alt_va \tab character \tab Altitude of Gage or land surface \cr
+alt_acy_va \tab character \tab Altitude accuracy \cr
+alt_datum_cd \tab character \tab Altitude datum \cr
+huc_cd \tab character \tab Hydrologic unit code \cr
+data_type_cd \tab character \tab Data type \cr
+parm_cd \tab character \tab Parameter code \cr
+stat_cd \tab character \tab Statistical code \cr
+dd_nu \tab character \tab Internal database key \cr
+loc_web_ds \tab character \tab Additional measurement description \cr
+medium_grp_cd \tab character \tab Medium group code \cr
+parm_grp_cd \tab character \tab Parameter group code \cr
+srs_id \tab character \tab SRS ID \cr
+access_cd \tab character \tab Access code \cr
+begin_date \tab Date \tab Begin date \cr
+end_date \tab Date \tab End date \cr
+count_nu \tab integer \tab Record count\cr
+parameter_group_nm \tab character \tab Parameter group name \cr
+parameter_nm \tab character \tab Parameter name \cr
+casrn \tab character \tab Chemical Abstracts Service (CAS) Registry Number \cr
+srsname \tab character \tab Substance Registry Services \cr
+parameter_units \tab character \tab Parameter units \cr
+}
+
+There are also several useful attributes attached to the data frame:
+\tabular{lll}{
+Name \tab Type \tab Description \cr
+url \tab character \tab The url used to generate the data \cr
+comment \tab character \tab Header comments from the RDB file \cr
+queryTime \tab POSIXct \tab The time the data was returned \cr
+}
+}
+\description{
+Imports a table of available parameters, period of record, and count. See \url{http://waterservices.usgs.gov/rest/Site-Service.html}
+for more information.
+}
+\examples{
+\dontrun{
+availableData <- whatNWISdata('05114000')
+# To find just unit value ('instantaneous') data:
+uvData <- whatNWISdata('05114000',service="uv")
+uvDataMulti <- whatNWISdata(c('05114000','09423350'),service=c("uv","dv"))
+siteNumbers <- c("01491000","01645000")
+flowAndTemp <- whatNWISdata(siteNumbers, parameterCd=c("00060","00010"))
+}
+}
+\keyword{USGS}
+\keyword{data}
+\keyword{import}
+\keyword{service}
+\keyword{web}
+
diff --git a/tests/testthat/tests_userFriendly_fxns.R b/tests/testthat/tests_userFriendly_fxns.R
index 945c8376e1a432044d6a6e3d4ce1f386c7783fed..87803e3d8c57191fa3605c8744f42d5289d2b9b1 100644
--- a/tests/testthat/tests_userFriendly_fxns.R
+++ b/tests/testthat/tests_userFriendly_fxns.R
@@ -19,7 +19,7 @@ test_that("Unit value data returns correct types", {
   expect_is(rawData$dateTime, 'POSIXct')
   expect_is(rawData$Flow_Inst, 'numeric')
   expect_that(attr(rawData, "url"), equals(
-      "http://nwis.waterservices.usgs.gov/nwis/iv/?site=05114000&format=waterml,1.1&ParameterCd=00060&startDT=2014-10-10&endDT=2014-10-10")
+      "http://nwis.waterservices.usgs.gov/nwis/iv/?Access=0&site=05114000&format=waterml,1.1&ParameterCd=00060&startDT=2014-10-10&endDT=2014-10-10")
   )
 #   #First switchover to standard time:
 #   expect_that(as.numeric(timeZoneChange[which(timeZoneChange$tz_cd == "America/Chicago")[1],"dateTime"]),