diff --git a/rbx_asset/src/cloud.rs b/rbx_asset/src/cloud.rs
index 4510243..30ee5f3 100644
--- a/rbx_asset/src/cloud.rs
+++ b/rbx_asset/src/cloud.rs
@@ -1,4 +1,4 @@
-use crate::ResponseError;
+use crate::{ResponseError,ReaderType,maybe_gzip_decode,read_readable};
 
 #[derive(Debug,serde::Deserialize,serde::Serialize)]
 #[allow(nonstandard_style,dead_code)]
@@ -297,25 +297,6 @@ impl RobloxOperation{
 	}
 }
 
-//idk how to do this better
-enum ReaderType<R:std::io::Read>{
-	GZip(flate2::read::GzDecoder<std::io::BufReader<R>>),
-	Raw(std::io::BufReader<R>),
-}
-fn maybe_gzip_decode<R:std::io::Read>(input:R)->std::io::Result<ReaderType<R>>{
-	let mut buf=std::io::BufReader::new(input);
-	let peek=std::io::BufRead::fill_buf(&mut buf)?;
-	match &peek[0..2]{
-		b"\x1f\x8b"=>Ok(ReaderType::GZip(flate2::read::GzDecoder::new(buf))),
-		_=>Ok(ReaderType::Raw(buf)),
-	}
-}
-fn read_readable(mut readable:impl std::io::Read)->std::io::Result<Vec<u8>>{
-	let mut contents=Vec::new();
-	readable.read_to_end(&mut contents)?;
-	Ok(contents)
-}
-
 #[derive(Clone)]
 pub struct ApiKey(String);
 impl ApiKey{
diff --git a/rbx_asset/src/cookie.rs b/rbx_asset/src/cookie.rs
index dbf046d..7ad53f2 100644
--- a/rbx_asset/src/cookie.rs
+++ b/rbx_asset/src/cookie.rs
@@ -1,4 +1,4 @@
-use crate::ResponseError;
+use crate::{ResponseError,ReaderType,maybe_gzip_decode,read_readable};
 
 #[derive(Debug)]
 pub enum PostError{
@@ -306,25 +306,6 @@ pub struct UserInventoryPageResponse{
 	pub data:Vec<UserInventoryItem>,
 }
 
-//idk how to do this better
-enum ReaderType<R:std::io::Read>{
-	GZip(flate2::read::GzDecoder<std::io::BufReader<R>>),
-	Raw(std::io::BufReader<R>),
-}
-fn maybe_gzip_decode<R:std::io::Read>(input:R)->std::io::Result<ReaderType<R>>{
-	let mut buf=std::io::BufReader::new(input);
-	let peek=std::io::BufRead::fill_buf(&mut buf)?;
-	match &peek[0..2]{
-		b"\x1f\x8b"=>Ok(ReaderType::GZip(flate2::read::GzDecoder::new(buf))),
-		_=>Ok(ReaderType::Raw(buf)),
-	}
-}
-fn read_readable(mut readable:impl std::io::Read)->std::io::Result<Vec<u8>>{
-	let mut contents=Vec::new();
-	readable.read_to_end(&mut contents)?;
-	Ok(contents)
-}
-
 #[derive(Clone)]
 pub struct Cookie(String);
 impl Cookie{
diff --git a/rbx_asset/src/lib.rs b/rbx_asset/src/lib.rs
index 7728978..c41ff74 100644
--- a/rbx_asset/src/lib.rs
+++ b/rbx_asset/src/lib.rs
@@ -20,7 +20,7 @@ impl std::fmt::Display for ResponseError{
 }
 impl std::error::Error for ResponseError{}
 // lazy function to draw out meaningful info from http response on failure
-pub async fn response_ok(response:reqwest::Response)->Result<reqwest::Response,ResponseError>{
+pub(crate) async fn response_ok(response:reqwest::Response)->Result<reqwest::Response,ResponseError>{
 	let status_code=response.status();
 	if status_code.is_success(){
 		Ok(response)
@@ -35,3 +35,22 @@ pub async fn response_ok(response:reqwest::Response)->Result<reqwest::Response,R
 		}))
 	}
 }
+
+//idk how to do this better
+pub(crate) enum ReaderType<R:std::io::Read>{
+	GZip(flate2::read::GzDecoder<std::io::BufReader<R>>),
+	Raw(std::io::BufReader<R>),
+}
+pub(crate) fn maybe_gzip_decode<R:std::io::Read>(input:R)->std::io::Result<ReaderType<R>>{
+	let mut buf=std::io::BufReader::new(input);
+	let peek=std::io::BufRead::fill_buf(&mut buf)?;
+	match &peek[0..2]{
+		b"\x1f\x8b"=>Ok(ReaderType::GZip(flate2::read::GzDecoder::new(buf))),
+		_=>Ok(ReaderType::Raw(buf)),
+	}
+}
+pub(crate) fn read_readable(mut readable:impl std::io::Read)->std::io::Result<Vec<u8>>{
+	let mut contents=Vec::new();
+	readable.read_to_end(&mut contents)?;
+	Ok(contents)
+}